Initial prototype for optimized Telegesis read/write layer.
[contrib/iotivity.git] / plugins / zigbee_wrapper / telegesis_wrapper / include / twtypes.h
1 //******************************************************************
2 //
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 /**
22  * @file
23  *
24  * This API only works with:
25  *      Telegesis ETRX357
26  *      CICIE R310 B110615
27  *
28  */
29
30 #ifndef TWTYPES_H_
31 #define TWTYPES_H_
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif // __cplusplus
36
37 #include <stdint.h>
38 #include <stdbool.h>
39
40 #define DEVICE_BAUDRATE                 (B19200)
41 #define MAX_ZIGBEE_BYTES                (512)
42 #define MAX_ZIGBEE_ENROLLED_DEVICES     (255)
43
44 #define TIME_OUT_00_SECOND      (0)
45 #define TIME_OUT_01_SECOND      (1)
46 #define TIME_OUT_05_SECONDS     (5)
47 #define TIME_OUT_07_SECONDS     (7)
48 #define TIME_OUT_10_SECONDS     (10)
49 #define TIME_OUT_15_SECONDS     (15)
50
51 #define SIMPLEDESC_RESPONSE_EXPECTED_LINES (6)
52
53 #define AT_STR_ERROR_OK         "00"
54
55 #define SENDMODE                "0"
56 #define SEPARATOR               ","
57 #define SEPARATOR_LENGTH        strlen(SEPARATOR)
58
59 #define AT_CMD_RESET                "AT&F"
60 #define AT_CMD_GET_NETWORK_INFO     "AT+N"
61 #define AT_CMD_ESTABLISH_NETWORK    "AT+EN"
62 #define AT_CMD_PERMIT_JOIN          "AT+PJOIN:"
63 #define AT_CMD_MATCH_REQUEST        "AT+MATCHREQ:"
64 #define AT_CMD_SIMPLE_DESC          "AT+SIMPLEDESC:"
65 #define AT_CMD_WRITE_ATR            "AT+WRITEATR:"
66 #define AT_CMD_READ_ATR             "AT+READATR:"
67 #define AT_CMD_RUN_ON_OFF           "AT+RONOFF:"
68 #define AT_CMD_MOVE_TO_LEVEL        "AT+LCMVTOLEV:"
69 #define AT_CMD_DOOR_LOCK            "AT+DRLOCK:"
70 #define AT_CMD_GET_LOCAL_EUI        "ATS04?"
71 #define AT_CMD_REMOTE_EUI_REQUEST   "AT+EUIREQ:"
72
73 #define TW_ENDCONTROL_ERROR_STRING  "ERROR:"
74
75 #define SIZE_EUI                    (17)
76 #define SIZE_NODEID                 (5)
77 #define SIZE_CLUSTERID              (5)
78 #define SIZE_ENDPOINTID             (3)
79
80 #define SIZE_ZONESTATUS             (5)
81 #define SIZE_ZONESTATUS_EXTENDED    (3)
82 #define SIZE_ZONEID                 (3)
83 #define SIZE_ZONETYPE               (5)
84 #define SIZE_UPDATE_DELAY_TIME      (5)
85
86 //-----------------------------------------------------------------------------
87 // Typedefs
88 //-----------------------------------------------------------------------------
89 typedef enum
90 {
91     ZB_STATE_UNKNOWN,
92     ZB_STATE_INIT
93 } TWState;
94
95 typedef struct
96 {
97     TWState state;
98     uint64_t panId;
99     uint64_t extPanId;
100
101     char*   remoteAttributeValueRead;
102     uint8_t remoteAtrributeValueReadLength;
103 } TWStatus;
104
105 typedef enum
106 {
107     TW_RESULT_OK = 0,
108
109     TW_RESULT_ERROR_LINE_COUNT,
110     TW_RESULT_NO_LOCAL_PAN,
111     TW_RESULT_HAS_LOCAL_PAN,
112     TW_RESULT_NEW_LOCAL_PAN_ESTABLISHED,
113     TW_RESULT_DEVICE_JOINED,
114     TW_RESULT_FOUND_NO_MATCHED_DEVICE,
115     TW_RESULT_FOUND_MATCHED_DEVICES,
116     TW_RESULT_HAS_CLUSTERS,
117     TW_RESULT_HAS_NO_CLUSTER,
118     TW_RESULT_REMOTE_ATTR_HAS_VALUE,
119
120     TW_RESULT_UNKNOWN,
121
122     TW_RESULT_ERROR_INVALID_PARAMS,
123     TW_RESULT_ERROR_INVALID_PORT,
124     TW_RESULT_ERROR_NO_MEMORY,
125     TW_RESULT_ERROR_NOTIMPL,
126
127     TW_RESULT_ERROR = 255
128
129 } TWResultCode;
130
131 typedef enum
132 {
133     AT_ERROR_EVERYTHING_OK  = 0,
134     AT_ERROR_NODE_IS_PART_OF_PAN = 28,
135     AT_ERROR_MESSAGE_NOT_SENT_TO_TARGET_SUCCESSFULLY   = 66,
136     AT_ERROR_INVALID_OPERATION  = 70,
137
138 } TWATErrorCode;
139
140 typedef enum
141 {
142     TW_ENDCONTROL_OK = 0,
143     TW_ENDCONTROL_ERROR,
144     TW_ENDCONTROL_ACK,
145     TW_ENDCONTROL_SEQ,
146     TW_ENDCONTROL_MAX_VALUE
147
148 } TWEndControl;
149
150 typedef struct
151 {
152     const char * endStr;
153     TWEndControl endControl;
154
155 } TWEndControlMap;
156
157 typedef TWResultCode (*TWATResultHandler)(int count, char** tokens);
158
159 typedef struct
160 {
161     const char *resultTxt;
162     TWATResultHandler handler;
163
164 } TWATResultHandlerPair;
165
166 #ifdef __cplusplus
167 }
168 #endif // __cplusplus
169
170 #endif /* TWTYPES_H_ */