this is using the mbed os version 5-13-1

Dependencies:   mbed-http

Committer:
ocomeni
Date:
Mon Apr 22 18:34:31 2019 +0000
Revision:
100:80ef4bc31b7a
Parent:
99:05398b3184f8
Child:
103:7b566b522427
added support for the following response:; - AT_EVENT; - CONNECT_EVENT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ocomeni 78:07bb86e3ce14 1 #ifndef __COMMON_TYPES_H__
ocomeni 78:07bb86e3ce14 2 #define __COMMON_TYPES_H__
ocomeni 78:07bb86e3ce14 3 #include <mbed.h>
ocomeni 81:637a87eb8170 4 #include <string>
ocomeni 79:a2187bbfa407 5 #include "ble/BLE.h"
ocomeni 79:a2187bbfa407 6 #include "SecurityManager.h"
ocomeni 84:7c7add00f4bf 7 #include "http_request.h"
ocomeni 80:e8f0e92e3ac9 8 #include "common_config.h"
ocomeni 78:07bb86e3ce14 9 #define BLE_MAX_DEVICE_NAME_LEN 10
ocomeni 78:07bb86e3ce14 10 #define MAX_SSID_LEN 32
ocomeni 78:07bb86e3ce14 11 #define MAX_PASSKEY_LEN 32
ocomeni 84:7c7add00f4bf 12 #define EDM_START_BYTE 0xAA
ocomeni 84:7c7add00f4bf 13 #define EDM_STOP_BYTE 0x55
ocomeni 90:ed0267eca7b5 14 #define EDM_HDR_LEN 6
ocomeni 84:7c7add00f4bf 15 #define MAX_EDM_PAYLOAD_LEN (4096-1)
ocomeni 84:7c7add00f4bf 16 #define MIN_EDM_PAYLOAD_LEN (2)
ocomeni 84:7c7add00f4bf 17 #define MAX_HTTP_HEADER_LINES
ocomeni 84:7c7add00f4bf 18 #define MAX_URL_LEN 100
ocomeni 100:80ef4bc31b7a 19 #define MAX_IPv4_LEN 16
ocomeni 78:07bb86e3ce14 20
ocomeni 78:07bb86e3ce14 21 /** ble configuration structure
ocomeni 78:07bb86e3ce14 22 */
ocomeni 92:ec9550034276 23 typedef struct {
ocomeni 79:a2187bbfa407 24 char deviceName[BLE_MAX_DEVICE_NAME_LEN]; /* BLE Device Name */
ocomeni 79:a2187bbfa407 25 uint16_t advInterval; /* advertising interval in msecs */
ocomeni 79:a2187bbfa407 26 uint16_t advTimeout; /* advertising timeout in secs */
ocomeni 79:a2187bbfa407 27 //Passkey_t pairingKey; /* pairing Key */
ocomeni 79:a2187bbfa407 28 uint8_t pairingKey[6]; /* pairing Key */
ocomeni 78:07bb86e3ce14 29 } ble_config_t;
ocomeni 78:07bb86e3ce14 30
ocomeni 78:07bb86e3ce14 31 /** ble configuration structure
ocomeni 78:07bb86e3ce14 32 */
ocomeni 92:ec9550034276 33 typedef struct {
ocomeni 78:07bb86e3ce14 34 char ssid[MAX_SSID_LEN]; /* WiFi SSID */
ocomeni 78:07bb86e3ce14 35 char pass[MAX_PASSKEY_LEN]; /* WiFi Passkey */
ocomeni 78:07bb86e3ce14 36 nsapi_security_t security; /* WiFi security */
ocomeni 78:07bb86e3ce14 37 } wifi_config_t;
ocomeni 78:07bb86e3ce14 38
ocomeni 78:07bb86e3ce14 39 /** ble configuration structure
ocomeni 78:07bb86e3ce14 40 */
ocomeni 92:ec9550034276 41 typedef struct {
ocomeni 78:07bb86e3ce14 42 wifi_config_t wifi_config; /* wifi configuration */
ocomeni 78:07bb86e3ce14 43 ble_config_t ble_config; /* ble configuration */
ocomeni 78:07bb86e3ce14 44 } app_config_t;
ocomeni 78:07bb86e3ce14 45
ocomeni 78:07bb86e3ce14 46
ocomeni 92:ec9550034276 47 typedef enum
ocomeni 79:a2187bbfa407 48 {
ocomeni 95:290859010c8c 49 WIFI_CONFIG_RESET,
ocomeni 95:290859010c8c 50 WIFI_CONFIG_STORE,
ocomeni 95:290859010c8c 51 WIFI_CONFIG_LOAD,
ocomeni 95:290859010c8c 52 WIFI_CONFIG_ACTIVATE,
ocomeni 95:290859010c8c 53 WIFI_CONFIG_DEACTIVATE
ocomeni 95:290859010c8c 54 }action_id_t;
ocomeni 95:290859010c8c 55
ocomeni 95:290859010c8c 56
ocomeni 95:290859010c8c 57 typedef enum
ocomeni 95:290859010c8c 58 {
ocomeni 79:a2187bbfa407 59 WIFI_CMD_NONE,
ocomeni 81:637a87eb8170 60 WIFI_CMD_CONFIG,
ocomeni 81:637a87eb8170 61 WIFI_CMD_INTERNET_CONFIG,
ocomeni 79:a2187bbfa407 62 WIFI_CMD_SCAN,
ocomeni 81:637a87eb8170 63 WIFI_CMD_DETAILED_SCAN,
ocomeni 79:a2187bbfa407 64 WIFI_CMD_CONNECT,
ocomeni 79:a2187bbfa407 65 WIFI_CMD_DISCONNECT,
ocomeni 95:290859010c8c 66 WIFI_CMD_NETWORK_STATUS,
ocomeni 95:290859010c8c 67 WIFI_CMD_WIFI_STATUS,
ocomeni 79:a2187bbfa407 68 WIFI_CMD_SEND_HTTPS_REQ,
ocomeni 79:a2187bbfa407 69 WIFI_CMD_SEND_HTTP_REQ
ocomeni 79:a2187bbfa407 70 }wifi_cmd_t;
ocomeni 79:a2187bbfa407 71
ocomeni 92:ec9550034276 72 typedef enum
ocomeni 81:637a87eb8170 73 {
ocomeni 100:80ef4bc31b7a 74 AT_RESP_NONE = 0,
ocomeni 100:80ef4bc31b7a 75 AT_SCAN_RESP = 1,
ocomeni 100:80ef4bc31b7a 76 AT_DETAILED_SCAN_RESP = 2,
ocomeni 100:80ef4bc31b7a 77 AT_CONNECT_RESP = 3,
ocomeni 100:80ef4bc31b7a 78 AT_DISCONNECT_RESP = 4,
ocomeni 100:80ef4bc31b7a 79 WIFI_RECONNECT_INFO = 5,
ocomeni 100:80ef4bc31b7a 80 WIFI_DISCONNECT_INFO = 6,
ocomeni 100:80ef4bc31b7a 81 AT_CONFIG_RESP = 7,
ocomeni 100:80ef4bc31b7a 82 AT_INTERNET_CONFIG_RESP = 8,
ocomeni 100:80ef4bc31b7a 83 AT_NETWORK_STATUS_RESP = 9,
ocomeni 100:80ef4bc31b7a 84 AT_WIFI_STATUS_RESP = 10,
ocomeni 100:80ef4bc31b7a 85 AT_HTTPS_RESP = 11,
ocomeni 100:80ef4bc31b7a 86 AT_HTTPS_RESP_DOWNLOAD = 12,
ocomeni 100:80ef4bc31b7a 87 AT_HTTP_RESP = 13,
ocomeni 100:80ef4bc31b7a 88 AT_HTTP_RESP_DOWNLOAD = 14,
ocomeni 100:80ef4bc31b7a 89 AT_EVENT = 15,
ocomeni 100:80ef4bc31b7a 90 CONNECT_EVENT = 16,
ocomeni 100:80ef4bc31b7a 91 DATA_EVENT = 17,
ocomeni 100:80ef4bc31b7a 92 AT_COMMAND_FAILED = 18
ocomeni 81:637a87eb8170 93 }at_cmd_resp_t;
ocomeni 81:637a87eb8170 94
ocomeni 90:ed0267eca7b5 95 typedef enum edm_msg_id
ocomeni 90:ed0267eca7b5 96 {
ocomeni 90:ed0267eca7b5 97 CONNECT_MSG_ID = 0x0010,
ocomeni 90:ed0267eca7b5 98 DISCONNECT_MSG_ID = 0x0020,
ocomeni 90:ed0267eca7b5 99 DATA_MSG_ID = 0x0030,
ocomeni 90:ed0267eca7b5 100 AT_MSG_ID = 0x0040
ocomeni 90:ed0267eca7b5 101 }edm_msg_id_t;
ocomeni 90:ed0267eca7b5 102
ocomeni 90:ed0267eca7b5 103
ocomeni 90:ed0267eca7b5 104 typedef enum edm_msg_type
ocomeni 90:ed0267eca7b5 105 {
ocomeni 90:ed0267eca7b5 106 EVENT_MSG_TYPE = 0x01,
ocomeni 90:ed0267eca7b5 107 INDICATION_MSG_TYPE = 0x02,
ocomeni 90:ed0267eca7b5 108 RESPONSE_MSG_TYPE = 0x03,
ocomeni 90:ed0267eca7b5 109 REQUEST_MSG_TYPE = 0x04,
ocomeni 90:ed0267eca7b5 110 CONFIRMATION_MSG_TYPE = 0x05,
ocomeni 90:ed0267eca7b5 111 COMMAND_MSG_TYPE = 0x06
ocomeni 90:ed0267eca7b5 112 }edm_msg_type_t;
ocomeni 90:ed0267eca7b5 113
ocomeni 90:ed0267eca7b5 114 typedef enum channel_id
ocomeni 90:ed0267eca7b5 115 {
ocomeni 90:ed0267eca7b5 116 WIFI_CHANNEL = 0x00,
ocomeni 93:06e755a80187 117 BLE_CHANNEL = 0x01,
ocomeni 93:06e755a80187 118 NO_CHANNEL = 0xFF
ocomeni 90:ed0267eca7b5 119 }channel_id_t;
ocomeni 90:ed0267eca7b5 120
ocomeni 90:ed0267eca7b5 121
ocomeni 81:637a87eb8170 122
ocomeni 81:637a87eb8170 123 typedef enum at_data_mode
ocomeni 81:637a87eb8170 124 {
ocomeni 81:637a87eb8170 125 AT_CMD_DATA_MODE,
ocomeni 81:637a87eb8170 126 AT_STD_DATA_MODE,
ocomeni 81:637a87eb8170 127 AT_EXT_DATA_MODE
ocomeni 81:637a87eb8170 128 }at_data_mode_t;
ocomeni 81:637a87eb8170 129
ocomeni 83:9c271a50a70b 130 typedef enum edm_payload_id
ocomeni 83:9c271a50a70b 131 {
ocomeni 99:05398b3184f8 132 CONNECT_EVENT_ID = 0x0011,
ocomeni 99:05398b3184f8 133 DISCONNECT_EVENT_ID = 0x0021,
ocomeni 99:05398b3184f8 134 DATA_EVENT_ID = 0x0031,
ocomeni 99:05398b3184f8 135 DATA_COMMAND_ID = 0x0036,
ocomeni 99:05398b3184f8 136 AT_REQUEST_ID = 0x0044,
ocomeni 99:05398b3184f8 137 AT_CONFIRMATION_ID = 0x0045,
ocomeni 99:05398b3184f8 138 AT_EVENT_ID = 0x0041
ocomeni 83:9c271a50a70b 139 }edm_payload_id_t;
ocomeni 83:9c271a50a70b 140
ocomeni 81:637a87eb8170 141 typedef enum conn_scheme
ocomeni 81:637a87eb8170 142 {
ocomeni 81:637a87eb8170 143 INVALID_SCHEME,
ocomeni 81:637a87eb8170 144 ALWAYS_CONNECTED,
ocomeni 81:637a87eb8170 145 EXTERNAL_CONNECT
ocomeni 81:637a87eb8170 146 }conn_scheme_t;
ocomeni 81:637a87eb8170 147
ocomeni 79:a2187bbfa407 148
ocomeni 79:a2187bbfa407 149 typedef struct {
ocomeni 79:a2187bbfa407 150 wifi_cmd_t wifi_cmd; /* wifi command */
ocomeni 93:06e755a80187 151 uint8_t padding[4-sizeof(wifi_cmd_t)]; /* padding */
ocomeni 79:a2187bbfa407 152 } wifi_cmd_message_t;
ocomeni 79:a2187bbfa407 153
ocomeni 80:e8f0e92e3ac9 154 typedef struct {
ocomeni 81:637a87eb8170 155 at_cmd_resp_t at_resp; /* AT response */
ocomeni 81:637a87eb8170 156 } at_resp_message_t;
ocomeni 81:637a87eb8170 157
ocomeni 81:637a87eb8170 158 typedef struct {
ocomeni 80:e8f0e92e3ac9 159 wifi_cmd_t wifi_cmd; /* wifi data command */
ocomeni 93:06e755a80187 160 uint8_t padding[4-sizeof(wifi_cmd_t)]; /* padding */
ocomeni 81:637a87eb8170 161 int dataLen; /* size of data in buffer */
ocomeni 81:637a87eb8170 162 uint8_t buffer[TX_BUFFER_LEN]; /* buffer length */
ocomeni 80:e8f0e92e3ac9 163 } wifi_data_msg_t;
ocomeni 80:e8f0e92e3ac9 164
ocomeni 81:637a87eb8170 165 typedef struct {
ocomeni 81:637a87eb8170 166 at_cmd_resp_t at_resp; /* AT response */
ocomeni 81:637a87eb8170 167 int dataLen; /* size of data in buffer */
ocomeni 81:637a87eb8170 168 uint8_t buffer[TX_BUFFER_LEN]; /* buffer length */
ocomeni 81:637a87eb8170 169 } at_data_msg_t;
ocomeni 81:637a87eb8170 170
ocomeni 81:637a87eb8170 171 typedef struct {
ocomeni 84:7c7add00f4bf 172 http_method method; /* POST/GET etc... */
ocomeni 90:ed0267eca7b5 173 char * request_URI; /* request URI/path */
ocomeni 90:ed0267eca7b5 174 char * http_version; /* http verstion HTTP/1.1 */
ocomeni 90:ed0267eca7b5 175 char * hostName; /* host name */
ocomeni 90:ed0267eca7b5 176 char * AcceptVal; /* types accepted */
ocomeni 90:ed0267eca7b5 177 char * contentType; /* content type */
ocomeni 90:ed0267eca7b5 178 char * contentLen; /* content length */
ocomeni 90:ed0267eca7b5 179 uint8_t * body; /* body */
ocomeni 90:ed0267eca7b5 180 uint8_t buffer[TX_BUFFER_LEN - 8*sizeof(char *)
ocomeni 90:ed0267eca7b5 181 - sizeof(http_method)]; // buffer
ocomeni 84:7c7add00f4bf 182 } http_request_t;
ocomeni 81:637a87eb8170 183
ocomeni 81:637a87eb8170 184 typedef struct {
ocomeni 83:9c271a50a70b 185 uint8_t startByte; /* start Byte 0xAA */
ocomeni 83:9c271a50a70b 186 uint16_t payloadLen; /* payload Length */
ocomeni 83:9c271a50a70b 187 uint16_t payloadID; /* payload identifier */
ocomeni 90:ed0267eca7b5 188 channel_id_t channel_id; /* channel_id_t*/
ocomeni 83:9c271a50a70b 189 } edm_header_t;
ocomeni 83:9c271a50a70b 190
ocomeni 83:9c271a50a70b 191 typedef struct {
ocomeni 81:637a87eb8170 192 string contentType; /* content type */
ocomeni 81:637a87eb8170 193 int bodyLen; /* body length */
ocomeni 81:637a87eb8170 194 uint8_t body[900]; /* body */
ocomeni 81:637a87eb8170 195 } http_response_t;
ocomeni 81:637a87eb8170 196
ocomeni 81:637a87eb8170 197 typedef struct {
ocomeni 81:637a87eb8170 198 uint8_t peer_id ; /* peer id */
ocomeni 81:637a87eb8170 199 conn_scheme_t connectionScheme; /* connection scheme */
ocomeni 90:ed0267eca7b5 200 char url[MAX_URL_LEN]; /* url string */
ocomeni 100:80ef4bc31b7a 201 char local_IPv4Address[MAX_IPv4_LEN]; /* local Ip address */
ocomeni 100:80ef4bc31b7a 202 char remote_IPv4Address[MAX_IPv4_LEN]; /* remote IP address */
ocomeni 100:80ef4bc31b7a 203 uint16_t remote_port; /* remote port */
ocomeni 81:637a87eb8170 204 } internet_config_t;
ocomeni 81:637a87eb8170 205
ocomeni 78:07bb86e3ce14 206 #endif // __COMMON_TYPES_H__