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

Dependencies:   mbed-http

Committer:
ocomeni
Date:
Fri Mar 29 22:18:33 2019 +0000
Revision:
87:99b37d26ff2a
Parent:
84:7c7add00f4bf
Child:
89:45f6db09a76d
http/https request and response implemented

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 84:7c7add00f4bf 14 #define EDM_HDR_LEN 5
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 78:07bb86e3ce14 22 typedef struct ble_config {
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 78:07bb86e3ce14 32 typedef struct wifi_config {
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 78:07bb86e3ce14 40 typedef struct app_config {
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 79:a2187bbfa407 46 typedef enum wifi_cmd
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 81:637a87eb8170 59 typedef enum at_cmd_resp
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 81:637a87eb8170 71 AT_HTTP_RESP
ocomeni 81:637a87eb8170 72 }at_cmd_resp_t;
ocomeni 81:637a87eb8170 73
ocomeni 81:637a87eb8170 74
ocomeni 81:637a87eb8170 75 typedef enum at_data_mode
ocomeni 81:637a87eb8170 76 {
ocomeni 81:637a87eb8170 77 AT_CMD_DATA_MODE,
ocomeni 81:637a87eb8170 78 AT_STD_DATA_MODE,
ocomeni 81:637a87eb8170 79 AT_EXT_DATA_MODE
ocomeni 81:637a87eb8170 80 }at_data_mode_t;
ocomeni 81:637a87eb8170 81
ocomeni 83:9c271a50a70b 82 typedef enum edm_payload_id
ocomeni 83:9c271a50a70b 83 {
ocomeni 83:9c271a50a70b 84 CONNECT_EVENT = 0x0011,
ocomeni 83:9c271a50a70b 85 DISCONNECT_EVENT = 0x0021,
ocomeni 83:9c271a50a70b 86 DATA_EVENT = 0x0031,
ocomeni 83:9c271a50a70b 87 DATA_COMMAND = 0x0036,
ocomeni 83:9c271a50a70b 88 AT_REQUEST = 0x0044,
ocomeni 83:9c271a50a70b 89 AT_CONFIRMATION = 0x0045,
ocomeni 83:9c271a50a70b 90 AT_EVENT = 0x0041
ocomeni 83:9c271a50a70b 91 }edm_payload_id_t;
ocomeni 83:9c271a50a70b 92
ocomeni 81:637a87eb8170 93 typedef enum conn_scheme
ocomeni 81:637a87eb8170 94 {
ocomeni 81:637a87eb8170 95 INVALID_SCHEME,
ocomeni 81:637a87eb8170 96 ALWAYS_CONNECTED,
ocomeni 81:637a87eb8170 97 EXTERNAL_CONNECT
ocomeni 81:637a87eb8170 98 }conn_scheme_t;
ocomeni 81:637a87eb8170 99
ocomeni 79:a2187bbfa407 100
ocomeni 79:a2187bbfa407 101 typedef struct {
ocomeni 79:a2187bbfa407 102 wifi_cmd_t wifi_cmd; /* wifi command */
ocomeni 79:a2187bbfa407 103 } wifi_cmd_message_t;
ocomeni 79:a2187bbfa407 104
ocomeni 80:e8f0e92e3ac9 105 typedef struct {
ocomeni 81:637a87eb8170 106 at_cmd_resp_t at_resp; /* AT response */
ocomeni 81:637a87eb8170 107 } at_resp_message_t;
ocomeni 81:637a87eb8170 108
ocomeni 81:637a87eb8170 109 typedef struct {
ocomeni 80:e8f0e92e3ac9 110 wifi_cmd_t wifi_cmd; /* wifi data command */
ocomeni 81:637a87eb8170 111 int dataLen; /* size of data in buffer */
ocomeni 81:637a87eb8170 112 uint8_t buffer[TX_BUFFER_LEN]; /* buffer length */
ocomeni 80:e8f0e92e3ac9 113 } wifi_data_msg_t;
ocomeni 80:e8f0e92e3ac9 114
ocomeni 81:637a87eb8170 115 typedef struct {
ocomeni 81:637a87eb8170 116 at_cmd_resp_t at_resp; /* AT response */
ocomeni 81:637a87eb8170 117 int dataLen; /* size of data in buffer */
ocomeni 81:637a87eb8170 118 uint8_t buffer[TX_BUFFER_LEN]; /* buffer length */
ocomeni 81:637a87eb8170 119 } at_data_msg_t;
ocomeni 81:637a87eb8170 120
ocomeni 81:637a87eb8170 121 typedef struct {
ocomeni 84:7c7add00f4bf 122 http_method method; /* POST/GET etc... */
ocomeni 87:99b37d26ff2a 123 std::string request_URI; /* request URI/path */
ocomeni 87:99b37d26ff2a 124 std::string http_version; /* http verstion HTTP/1.1 */
ocomeni 87:99b37d26ff2a 125 std::string hostName; /* host name */
ocomeni 87:99b37d26ff2a 126 std::string AcceptVal; /* types accepted */
ocomeni 87:99b37d26ff2a 127 std::string contentType; /* content type */
ocomeni 87:99b37d26ff2a 128 std::string contentLen; /* content length as string */
ocomeni 81:637a87eb8170 129 uint8_t body[900]; /* body */
ocomeni 84:7c7add00f4bf 130 } http_request_t;
ocomeni 81:637a87eb8170 131
ocomeni 81:637a87eb8170 132 typedef struct {
ocomeni 83:9c271a50a70b 133 uint8_t startByte; /* start Byte 0xAA */
ocomeni 83:9c271a50a70b 134 uint16_t payloadLen; /* payload Length */
ocomeni 83:9c271a50a70b 135 uint16_t payloadID; /* payload identifier */
ocomeni 83:9c271a50a70b 136 } edm_header_t;
ocomeni 83:9c271a50a70b 137
ocomeni 83:9c271a50a70b 138 typedef struct {
ocomeni 81:637a87eb8170 139 string contentType; /* content type */
ocomeni 81:637a87eb8170 140 int bodyLen; /* body length */
ocomeni 81:637a87eb8170 141 uint8_t body[900]; /* body */
ocomeni 81:637a87eb8170 142 } http_response_t;
ocomeni 81:637a87eb8170 143
ocomeni 81:637a87eb8170 144 typedef struct {
ocomeni 81:637a87eb8170 145 uint8_t peer_id ; /* peer id */
ocomeni 81:637a87eb8170 146 conn_scheme_t connectionScheme; /* connection scheme */
ocomeni 84:7c7add00f4bf 147 //string * url; /* body */
ocomeni 84:7c7add00f4bf 148 char url[MAX_URL_LEN]; /* body */
ocomeni 81:637a87eb8170 149 } internet_config_t;
ocomeni 81:637a87eb8170 150
ocomeni 78:07bb86e3ce14 151 #endif // __COMMON_TYPES_H__