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

Dependencies:   mbed-http

Committer:
ocomeni
Date:
Sat Apr 13 14:17:29 2019 +0000
Revision:
92:ec9550034276
Parent:
90:ed0267eca7b5
Child:
93:06e755a80187
implemented DEFINE switch to resolve mbed memory pool allocation failure

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 78:07bb86e3ce14 19
ocomeni 78:07bb86e3ce14 20 /** ble configuration structure
ocomeni 78:07bb86e3ce14 21 */
ocomeni 92:ec9550034276 22 typedef struct {
ocomeni 79:a2187bbfa407 23 char deviceName[BLE_MAX_DEVICE_NAME_LEN]; /* BLE Device Name */
ocomeni 79:a2187bbfa407 24 uint16_t advInterval; /* advertising interval in msecs */
ocomeni 79:a2187bbfa407 25 uint16_t advTimeout; /* advertising timeout in secs */
ocomeni 79:a2187bbfa407 26 //Passkey_t pairingKey; /* pairing Key */
ocomeni 79:a2187bbfa407 27 uint8_t pairingKey[6]; /* pairing Key */
ocomeni 78:07bb86e3ce14 28 } ble_config_t;
ocomeni 78:07bb86e3ce14 29
ocomeni 78:07bb86e3ce14 30 /** ble configuration structure
ocomeni 78:07bb86e3ce14 31 */
ocomeni 92:ec9550034276 32 typedef struct {
ocomeni 78:07bb86e3ce14 33 char ssid[MAX_SSID_LEN]; /* WiFi SSID */
ocomeni 78:07bb86e3ce14 34 char pass[MAX_PASSKEY_LEN]; /* WiFi Passkey */
ocomeni 78:07bb86e3ce14 35 nsapi_security_t security; /* WiFi security */
ocomeni 78:07bb86e3ce14 36 } wifi_config_t;
ocomeni 78:07bb86e3ce14 37
ocomeni 78:07bb86e3ce14 38 /** ble configuration structure
ocomeni 78:07bb86e3ce14 39 */
ocomeni 92:ec9550034276 40 typedef struct {
ocomeni 78:07bb86e3ce14 41 wifi_config_t wifi_config; /* wifi configuration */
ocomeni 78:07bb86e3ce14 42 ble_config_t ble_config; /* ble configuration */
ocomeni 78:07bb86e3ce14 43 } app_config_t;
ocomeni 78:07bb86e3ce14 44
ocomeni 78:07bb86e3ce14 45
ocomeni 92:ec9550034276 46 typedef enum
ocomeni 79:a2187bbfa407 47 {
ocomeni 79:a2187bbfa407 48 WIFI_CMD_NONE,
ocomeni 81:637a87eb8170 49 WIFI_CMD_CONFIG,
ocomeni 81:637a87eb8170 50 WIFI_CMD_INTERNET_CONFIG,
ocomeni 79:a2187bbfa407 51 WIFI_CMD_SCAN,
ocomeni 81:637a87eb8170 52 WIFI_CMD_DETAILED_SCAN,
ocomeni 79:a2187bbfa407 53 WIFI_CMD_CONNECT,
ocomeni 79:a2187bbfa407 54 WIFI_CMD_DISCONNECT,
ocomeni 79:a2187bbfa407 55 WIFI_CMD_SEND_HTTPS_REQ,
ocomeni 79:a2187bbfa407 56 WIFI_CMD_SEND_HTTP_REQ
ocomeni 79:a2187bbfa407 57 }wifi_cmd_t;
ocomeni 79:a2187bbfa407 58
ocomeni 92:ec9550034276 59 typedef enum
ocomeni 81:637a87eb8170 60 {
ocomeni 81:637a87eb8170 61 AT_RESP_NONE,
ocomeni 81:637a87eb8170 62 AT_SCAN_RESP,
ocomeni 81:637a87eb8170 63 AT_DETAILED_SCAN_RESP,
ocomeni 81:637a87eb8170 64 AT_CONNECT_RESP,
ocomeni 81:637a87eb8170 65 AT_DISCONNECT_RESP,
ocomeni 81:637a87eb8170 66 WIFI_RECONNECT_INFO,
ocomeni 81:637a87eb8170 67 WIFI_DISCONNECT_INFO,
ocomeni 81:637a87eb8170 68 AT_CONFIG_RESP,
ocomeni 81:637a87eb8170 69 AT_INTERNET_CONFIG_RESP,
ocomeni 81:637a87eb8170 70 AT_HTTPS_RESP,
ocomeni 89:45f6db09a76d 71 AT_HTTPS_RESP_DOWNLOAD,
ocomeni 89:45f6db09a76d 72 AT_HTTP_RESP,
ocomeni 89:45f6db09a76d 73 AT_HTTP_RESP_DOWNLOAD
ocomeni 81:637a87eb8170 74 }at_cmd_resp_t;
ocomeni 81:637a87eb8170 75
ocomeni 90:ed0267eca7b5 76 typedef enum edm_msg_id
ocomeni 90:ed0267eca7b5 77 {
ocomeni 90:ed0267eca7b5 78 CONNECT_MSG_ID = 0x0010,
ocomeni 90:ed0267eca7b5 79 DISCONNECT_MSG_ID = 0x0020,
ocomeni 90:ed0267eca7b5 80 DATA_MSG_ID = 0x0030,
ocomeni 90:ed0267eca7b5 81 AT_MSG_ID = 0x0040
ocomeni 90:ed0267eca7b5 82 }edm_msg_id_t;
ocomeni 90:ed0267eca7b5 83
ocomeni 90:ed0267eca7b5 84
ocomeni 90:ed0267eca7b5 85 typedef enum edm_msg_type
ocomeni 90:ed0267eca7b5 86 {
ocomeni 90:ed0267eca7b5 87 EVENT_MSG_TYPE = 0x01,
ocomeni 90:ed0267eca7b5 88 INDICATION_MSG_TYPE = 0x02,
ocomeni 90:ed0267eca7b5 89 RESPONSE_MSG_TYPE = 0x03,
ocomeni 90:ed0267eca7b5 90 REQUEST_MSG_TYPE = 0x04,
ocomeni 90:ed0267eca7b5 91 CONFIRMATION_MSG_TYPE = 0x05,
ocomeni 90:ed0267eca7b5 92 COMMAND_MSG_TYPE = 0x06
ocomeni 90:ed0267eca7b5 93 }edm_msg_type_t;
ocomeni 90:ed0267eca7b5 94
ocomeni 90:ed0267eca7b5 95 typedef enum channel_id
ocomeni 90:ed0267eca7b5 96 {
ocomeni 90:ed0267eca7b5 97 WIFI_CHANNEL = 0x00,
ocomeni 90:ed0267eca7b5 98 BLE_CHANNEL = 0x01
ocomeni 90:ed0267eca7b5 99 }channel_id_t;
ocomeni 90:ed0267eca7b5 100
ocomeni 90:ed0267eca7b5 101
ocomeni 81:637a87eb8170 102
ocomeni 81:637a87eb8170 103 typedef enum at_data_mode
ocomeni 81:637a87eb8170 104 {
ocomeni 81:637a87eb8170 105 AT_CMD_DATA_MODE,
ocomeni 81:637a87eb8170 106 AT_STD_DATA_MODE,
ocomeni 81:637a87eb8170 107 AT_EXT_DATA_MODE
ocomeni 81:637a87eb8170 108 }at_data_mode_t;
ocomeni 81:637a87eb8170 109
ocomeni 83:9c271a50a70b 110 typedef enum edm_payload_id
ocomeni 83:9c271a50a70b 111 {
ocomeni 83:9c271a50a70b 112 CONNECT_EVENT = 0x0011,
ocomeni 83:9c271a50a70b 113 DISCONNECT_EVENT = 0x0021,
ocomeni 83:9c271a50a70b 114 DATA_EVENT = 0x0031,
ocomeni 83:9c271a50a70b 115 DATA_COMMAND = 0x0036,
ocomeni 83:9c271a50a70b 116 AT_REQUEST = 0x0044,
ocomeni 83:9c271a50a70b 117 AT_CONFIRMATION = 0x0045,
ocomeni 83:9c271a50a70b 118 AT_EVENT = 0x0041
ocomeni 83:9c271a50a70b 119 }edm_payload_id_t;
ocomeni 83:9c271a50a70b 120
ocomeni 81:637a87eb8170 121 typedef enum conn_scheme
ocomeni 81:637a87eb8170 122 {
ocomeni 81:637a87eb8170 123 INVALID_SCHEME,
ocomeni 81:637a87eb8170 124 ALWAYS_CONNECTED,
ocomeni 81:637a87eb8170 125 EXTERNAL_CONNECT
ocomeni 81:637a87eb8170 126 }conn_scheme_t;
ocomeni 81:637a87eb8170 127
ocomeni 79:a2187bbfa407 128
ocomeni 79:a2187bbfa407 129 typedef struct {
ocomeni 79:a2187bbfa407 130 wifi_cmd_t wifi_cmd; /* wifi command */
ocomeni 79:a2187bbfa407 131 } wifi_cmd_message_t;
ocomeni 79:a2187bbfa407 132
ocomeni 80:e8f0e92e3ac9 133 typedef struct {
ocomeni 81:637a87eb8170 134 at_cmd_resp_t at_resp; /* AT response */
ocomeni 81:637a87eb8170 135 } at_resp_message_t;
ocomeni 81:637a87eb8170 136
ocomeni 81:637a87eb8170 137 typedef struct {
ocomeni 80:e8f0e92e3ac9 138 wifi_cmd_t wifi_cmd; /* wifi data command */
ocomeni 81:637a87eb8170 139 int dataLen; /* size of data in buffer */
ocomeni 81:637a87eb8170 140 uint8_t buffer[TX_BUFFER_LEN]; /* buffer length */
ocomeni 80:e8f0e92e3ac9 141 } wifi_data_msg_t;
ocomeni 80:e8f0e92e3ac9 142
ocomeni 81:637a87eb8170 143 typedef struct {
ocomeni 81:637a87eb8170 144 at_cmd_resp_t at_resp; /* AT response */
ocomeni 81:637a87eb8170 145 int dataLen; /* size of data in buffer */
ocomeni 81:637a87eb8170 146 uint8_t buffer[TX_BUFFER_LEN]; /* buffer length */
ocomeni 81:637a87eb8170 147 } at_data_msg_t;
ocomeni 81:637a87eb8170 148
ocomeni 81:637a87eb8170 149 typedef struct {
ocomeni 84:7c7add00f4bf 150 http_method method; /* POST/GET etc... */
ocomeni 90:ed0267eca7b5 151 char * request_URI; /* request URI/path */
ocomeni 90:ed0267eca7b5 152 char * http_version; /* http verstion HTTP/1.1 */
ocomeni 90:ed0267eca7b5 153 char * hostName; /* host name */
ocomeni 90:ed0267eca7b5 154 char * AcceptVal; /* types accepted */
ocomeni 90:ed0267eca7b5 155 char * contentType; /* content type */
ocomeni 90:ed0267eca7b5 156 char * contentLen; /* content length */
ocomeni 90:ed0267eca7b5 157 uint8_t * body; /* body */
ocomeni 90:ed0267eca7b5 158 uint8_t buffer[TX_BUFFER_LEN - 8*sizeof(char *)
ocomeni 90:ed0267eca7b5 159 - sizeof(http_method)]; // buffer
ocomeni 84:7c7add00f4bf 160 } http_request_t;
ocomeni 81:637a87eb8170 161
ocomeni 81:637a87eb8170 162 typedef struct {
ocomeni 83:9c271a50a70b 163 uint8_t startByte; /* start Byte 0xAA */
ocomeni 83:9c271a50a70b 164 uint16_t payloadLen; /* payload Length */
ocomeni 83:9c271a50a70b 165 uint16_t payloadID; /* payload identifier */
ocomeni 90:ed0267eca7b5 166 channel_id_t channel_id; /* channel_id_t*/
ocomeni 83:9c271a50a70b 167 } edm_header_t;
ocomeni 83:9c271a50a70b 168
ocomeni 83:9c271a50a70b 169 typedef struct {
ocomeni 81:637a87eb8170 170 string contentType; /* content type */
ocomeni 81:637a87eb8170 171 int bodyLen; /* body length */
ocomeni 81:637a87eb8170 172 uint8_t body[900]; /* body */
ocomeni 81:637a87eb8170 173 } http_response_t;
ocomeni 81:637a87eb8170 174
ocomeni 81:637a87eb8170 175 typedef struct {
ocomeni 81:637a87eb8170 176 uint8_t peer_id ; /* peer id */
ocomeni 81:637a87eb8170 177 conn_scheme_t connectionScheme; /* connection scheme */
ocomeni 90:ed0267eca7b5 178 char url[MAX_URL_LEN]; /* url string */
ocomeni 81:637a87eb8170 179 } internet_config_t;
ocomeni 81:637a87eb8170 180
ocomeni 78:07bb86e3ce14 181 #endif // __COMMON_TYPES_H__