Bluetooth Low Energy based Firmware Over The Air with Mbed. Mbed part is a external processor of the IoT devices and communicate with a Bluetooth module. The Bluetooth module have to support BLE and implement BLE FOTA profile designed by ours. BLE FOTA profile specification is available from our GIT hub wiki(https://github.com/sevencore/BLEFOTA).

Dependencies:   mbed

Fork of mbed_fota by KIM HyoengJun

Bluetooth Low Energy based Firmware Over The Air with Mbed. Mbed part is a external processor of the IoT devices and communicate with a Bluetooth module. The Bluetooth module have to support BLE and implement BLE FOTA profile designed by ours. BLE FOTA profile specification is available from our GIT hub wiki.

Committer:
dudnwjs
Date:
Mon Jul 13 06:32:05 2015 +0000
Revision:
5:e11b23f9aacc
Parent:
4:60be78a172c2
Child:
6:8dd20294b2aa
Fota Service Add complete

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudnwjs 0:a1f6b1ba8a1e 1 #include "BleMsgHandler.h"
dudnwjs 3:1e70387e1337 2 #include "dialog_fota_config.h"
dudnwjs 4:60be78a172c2 3 #include "diss_task.h"
dudnwjs 5:e11b23f9aacc 4 #include "fota_server_task.h"
dudnwjs 4:60be78a172c2 5 #include "app_task.h"
dudnwjs 4:60be78a172c2 6
dudnwjs 0:a1f6b1ba8a1e 7
dudnwjs 0:a1f6b1ba8a1e 8 namespace sevencore_fota{
dudnwjs 0:a1f6b1ba8a1e 9
dudnwjs 0:a1f6b1ba8a1e 10 BleMsgHandler::BleMsgHandler(Serial *_device)
dudnwjs 0:a1f6b1ba8a1e 11 {
dudnwjs 0:a1f6b1ba8a1e 12 print_flag = 0;
dudnwjs 0:a1f6b1ba8a1e 13 device = _device;
dudnwjs 2:dba344c91bce 14 SerialM = new SerialManager(_device);
dudnwjs 3:1e70387e1337 15 MsgQ = new MsgQueue(512);
dudnwjs 3:1e70387e1337 16 memset(recv_msg,0,512);
dudnwjs 0:a1f6b1ba8a1e 17 }
dudnwjs 0:a1f6b1ba8a1e 18
dudnwjs 0:a1f6b1ba8a1e 19 BleMsgHandler::BleMsgHandler(Serial *_device, Serial *_hostpc)
dudnwjs 0:a1f6b1ba8a1e 20 {
dudnwjs 0:a1f6b1ba8a1e 21 print_flag = 1;
dudnwjs 0:a1f6b1ba8a1e 22 device = _device;
dudnwjs 0:a1f6b1ba8a1e 23 hostpc = _hostpc;
dudnwjs 2:dba344c91bce 24 SerialM = new SerialManager(_device,_hostpc);
dudnwjs 3:1e70387e1337 25 MsgQ = new MsgQueue(512);
dudnwjs 3:1e70387e1337 26 memset(recv_msg,0,512);
dudnwjs 0:a1f6b1ba8a1e 27 }
dudnwjs 0:a1f6b1ba8a1e 28
dudnwjs 1:5cf3a6c969be 29 BleMsgHandler::~BleMsgHandler(void)
dudnwjs 1:5cf3a6c969be 30 {
dudnwjs 2:dba344c91bce 31 free(SerialM);
dudnwjs 3:1e70387e1337 32 free(MsgQ);
dudnwjs 1:5cf3a6c969be 33 }
dudnwjs 1:5cf3a6c969be 34
dudnwjs 0:a1f6b1ba8a1e 35 void BleMsgHandler::PrintTitle(void)
dudnwjs 0:a1f6b1ba8a1e 36 {
dudnwjs 0:a1f6b1ba8a1e 37 if( print_flag == 1 )
dudnwjs 5:e11b23f9aacc 38 hostpc->printf("\nSevencore Fota : BleMsg Handler Start\n");
dudnwjs 5:e11b23f9aacc 39 //SerialM->ReceiveToSerialTest();
dudnwjs 0:a1f6b1ba8a1e 40 }
dudnwjs 3:1e70387e1337 41
dudnwjs 3:1e70387e1337 42 void BleMsgHandler::BleMsgAlloc( unsigned short id,
dudnwjs 3:1e70387e1337 43 unsigned short dest_id,
dudnwjs 3:1e70387e1337 44 unsigned short src_id,
dudnwjs 3:1e70387e1337 45 unsigned short data_len,
dudnwjs 3:1e70387e1337 46 void *pdata,
dudnwjs 3:1e70387e1337 47 uint8_t *msg )
dudnwjs 3:1e70387e1337 48 {
dudnwjs 3:1e70387e1337 49 memset(msg,0,sizeof(msg));
dudnwjs 3:1e70387e1337 50 msg[0] = 0x05;
dudnwjs 3:1e70387e1337 51 memcpy(&msg[1],&id,sizeof(unsigned short));
dudnwjs 3:1e70387e1337 52 memcpy(&msg[1+1*sizeof(unsigned short)],&dest_id,sizeof(unsigned short));
dudnwjs 3:1e70387e1337 53 memcpy(&msg[1+2*sizeof(unsigned short)],&src_id,sizeof(unsigned short));
dudnwjs 3:1e70387e1337 54 memcpy(&msg[1+3*sizeof(unsigned short)],&data_len,sizeof(unsigned short));
dudnwjs 3:1e70387e1337 55 memcpy(&msg[1+4*sizeof(unsigned short)],pdata,data_len);
dudnwjs 3:1e70387e1337 56 }
dudnwjs 3:1e70387e1337 57
dudnwjs 3:1e70387e1337 58 int BleMsgHandler::BleSendMsg(uint8_t *msg, unsigned short size)
dudnwjs 3:1e70387e1337 59 {
dudnwjs 3:1e70387e1337 60 return SerialM->SendToSerial(msg,size);
dudnwjs 3:1e70387e1337 61 }
dudnwjs 3:1e70387e1337 62
dudnwjs 3:1e70387e1337 63 void BleMsgHandler::BleReceiveMsg(void)
dudnwjs 3:1e70387e1337 64 {
dudnwjs 3:1e70387e1337 65 int receive_size = -1;//default
dudnwjs 3:1e70387e1337 66 while(receive_size == -1)
dudnwjs 3:1e70387e1337 67 {
dudnwjs 3:1e70387e1337 68 receive_size = SerialM->ReceiveToSerial(recv_msg);
dudnwjs 3:1e70387e1337 69 }
dudnwjs 3:1e70387e1337 70
dudnwjs 3:1e70387e1337 71 uint8_t *msg;
dudnwjs 3:1e70387e1337 72 msg = new uint8_t[receive_size];
dudnwjs 3:1e70387e1337 73 memcpy(msg,recv_msg,receive_size);
dudnwjs 3:1e70387e1337 74 memset(recv_msg,0,512);
dudnwjs 3:1e70387e1337 75 MsgQ->EnQueue(msg);
dudnwjs 3:1e70387e1337 76 }
dudnwjs 3:1e70387e1337 77
dudnwjs 3:1e70387e1337 78 void BleMsgHandler::BleMsgHandle(void)
dudnwjs 3:1e70387e1337 79 {
dudnwjs 4:60be78a172c2 80 uint8_t *msg;
dudnwjs 4:60be78a172c2 81 ble_hdr msg_hdr;
dudnwjs 4:60be78a172c2 82 unsigned short paramPos = 1 + sizeof(msg_hdr);
dudnwjs 4:60be78a172c2 83
dudnwjs 3:1e70387e1337 84 if( print_flag == 1)
dudnwjs 3:1e70387e1337 85 hostpc->printf("Ble-Massage Handle Function!\n");
dudnwjs 4:60be78a172c2 86
dudnwjs 3:1e70387e1337 87 msg = (uint8_t*)MsgQ->DeQueue();
dudnwjs 3:1e70387e1337 88 memcpy(&msg_hdr, &msg[1], sizeof(msg_hdr));
dudnwjs 3:1e70387e1337 89
dudnwjs 3:1e70387e1337 90 if( print_flag == 1 )
dudnwjs 3:1e70387e1337 91 hostpc->printf(" handle msg : id(%d), dst(%d), src(%d), len(%d) !\n",
dudnwjs 3:1e70387e1337 92 msg_hdr.bType, msg_hdr.bDstid, msg_hdr.bSrcid, msg_hdr.bLength);
dudnwjs 3:1e70387e1337 93
dudnwjs 3:1e70387e1337 94 if (msg_hdr.bDstid != TASK_GTL)
dudnwjs 3:1e70387e1337 95 return;
dudnwjs 3:1e70387e1337 96
dudnwjs 4:60be78a172c2 97 switch( msg_hdr.bType )
dudnwjs 4:60be78a172c2 98 {
dudnwjs 4:60be78a172c2 99 case GAPM_CMP_EVT:
dudnwjs 5:e11b23f9aacc 100 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 101 hostpc->printf("==> GAPM_CMP_EVT!!\n");
dudnwjs 4:60be78a172c2 102 HandleGapmCmpEvt(msg_hdr.bType,(struct gapm_cmp_evt *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid);
dudnwjs 4:60be78a172c2 103 break;
dudnwjs 4:60be78a172c2 104 case GAPM_DEVICE_READY_IND:
dudnwjs 5:e11b23f9aacc 105 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 106 hostpc->printf("==> GAPM_DEVICE_READY_IND!!\n");
dudnwjs 5:e11b23f9aacc 107 gapm_device_ready_ind_handler(msg_hdr.bType,(struct gap_ready_evt *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid,this);
dudnwjs 4:60be78a172c2 108 break;
dudnwjs 4:60be78a172c2 109 case GAPM_ADV_REPORT_IND:
dudnwjs 5:e11b23f9aacc 110 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 111 hostpc->printf("==> GAPM_ADV_REPORT_IND!!\n");
dudnwjs 4:60be78a172c2 112 gapm_adv_report_ind_handler(msg_hdr.bType,(struct gapm_adv_report_ind *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid);
dudnwjs 4:60be78a172c2 113 break;
dudnwjs 4:60be78a172c2 114 case GAPC_CMP_EVT:
dudnwjs 5:e11b23f9aacc 115 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 116 hostpc->printf("==> GAPC_CMP_EVT!!\n");
dudnwjs 4:60be78a172c2 117 HandleGapcCmpEvt(msg_hdr.bType,(struct gapc_cmp_evt *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid);
dudnwjs 4:60be78a172c2 118 break;
dudnwjs 5:e11b23f9aacc 119 case GAPC_CONNECTION_REQ_IND:
dudnwjs 5:e11b23f9aacc 120 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 121 hostpc->printf("==> GAPC_CONNECTION_REQ_IND!!\n");
dudnwjs 5:e11b23f9aacc 122 gapc_connection_req_ind_handler(msg_hdr.bType,(struct gapc_connection_req_ind *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid,this);
dudnwjs 5:e11b23f9aacc 123 break;
dudnwjs 5:e11b23f9aacc 124 case GAPC_DISCONNECT_IND:
dudnwjs 5:e11b23f9aacc 125 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 126 hostpc->printf("==> GAPC_DISCONNECT_IND!!\n");
dudnwjs 5:e11b23f9aacc 127 gapc_disconnect_ind_handler(msg_hdr.bType,(struct gapc_disconnect_ind *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid,this);
dudnwjs 5:e11b23f9aacc 128 break;
dudnwjs 4:60be78a172c2 129 case DISS_CREATE_DB_CFM:
dudnwjs 5:e11b23f9aacc 130 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 131 hostpc->printf("==> DISS_CREATE_DB_CFM!!\n");
dudnwjs 4:60be78a172c2 132 diss_create_db_cfm_handler(msg_hdr.bType,(struct diss_create_db_cfm *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid,this);
dudnwjs 4:60be78a172c2 133 break;
dudnwjs 4:60be78a172c2 134 case DISS_DISABLE_IND:
dudnwjs 5:e11b23f9aacc 135 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 136 hostpc->printf("==> DISS_DISABLE_IND!!\n");
dudnwjs 4:60be78a172c2 137 break;
dudnwjs 4:60be78a172c2 138 case DISS_ERROR_IND:
dudnwjs 4:60be78a172c2 139 if ( print_flag == 1)
dudnwjs 4:60be78a172c2 140 hostpc->printf("Rcved DISS_ERROR_IND Msg\n");
dudnwjs 4:60be78a172c2 141 break;
dudnwjs 5:e11b23f9aacc 142 case FOTA_SERVER_CREATE_DB_CFM:
dudnwjs 5:e11b23f9aacc 143 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 144 hostpc->printf("==> FOTA_SERVER_CREATE_DB_CFM!!\n");
dudnwjs 5:e11b23f9aacc 145 fota_server_create_db_cfm_handler(msg_hdr.bType,(struct fota_server_create_db_cfm *)&msg[paramPos],msg_hdr.bDstid,msg_hdr.bSrcid,this);
dudnwjs 5:e11b23f9aacc 146 break;
dudnwjs 5:e11b23f9aacc 147 case FOTA_SERVER_DISABLE_IND:
dudnwjs 5:e11b23f9aacc 148 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 149 hostpc->printf("==> FOTA_SERVER_DISABLE_IND!!\n");
dudnwjs 5:e11b23f9aacc 150 break;
dudnwjs 5:e11b23f9aacc 151 case FOTA_SERVER_ERROR_IND:
dudnwjs 5:e11b23f9aacc 152 if ( print_flag == 1)
dudnwjs 5:e11b23f9aacc 153 hostpc->printf("Rcved FOTA_SERVER_ERROR_IND Msg\n");
dudnwjs 5:e11b23f9aacc 154 fota_server_data_flash_ind_handler(this);
dudnwjs 5:e11b23f9aacc 155 break;
dudnwjs 4:60be78a172c2 156 default:
dudnwjs 4:60be78a172c2 157 if( print_flag == 1)
dudnwjs 4:60be78a172c2 158 hostpc->printf("Massage Type Not Defined ! \n");
dudnwjs 4:60be78a172c2 159 break;
dudnwjs 4:60be78a172c2 160 }
dudnwjs 5:e11b23f9aacc 161 }//gapc_disconnect_ind_handler(GAPC_DISCONNECT_IND),(GAPC_CONNECTION_REQ_IND)gapc_connection_req_ind_handler
dudnwjs 3:1e70387e1337 162
dudnwjs 4:60be78a172c2 163 void BleMsgHandler::HandleGapmCmpEvt(unsigned short msgid,
dudnwjs 4:60be78a172c2 164 struct gapm_cmp_evt *param,
dudnwjs 4:60be78a172c2 165 unsigned short dest_id,
dudnwjs 4:60be78a172c2 166 unsigned short src_id)
dudnwjs 4:60be78a172c2 167 {
dudnwjs 4:60be78a172c2 168 if (param->status == CO_ERROR_NO_ERROR)
dudnwjs 4:60be78a172c2 169 {
dudnwjs 4:60be78a172c2 170 switch(param->operation)
dudnwjs 4:60be78a172c2 171 {
dudnwjs 4:60be78a172c2 172 case GAPM_NO_OP:// No operation.
dudnwjs 4:60be78a172c2 173 break;
dudnwjs 4:60be78a172c2 174 case GAPM_RESET:// Reset BLE subsystem: LL and HL.
dudnwjs 5:e11b23f9aacc 175 if( print_flag == 1)
dudnwjs 5:e11b23f9aacc 176 hostpc->printf("GAPM_RESET!! Start...\n");
dudnwjs 4:60be78a172c2 177 gapm_reset_completion_handler (msgid, (struct gapm_cmp_evt *)param, dest_id, src_id,this);
dudnwjs 4:60be78a172c2 178 break;
dudnwjs 4:60be78a172c2 179 case GAPM_CANCEL:// Cancel currently executed operation.
dudnwjs 4:60be78a172c2 180 break;
dudnwjs 4:60be78a172c2 181 case GAPM_SET_DEV_CONFIG:// Set device configuration
dudnwjs 4:60be78a172c2 182 if( print_flag == 1)
dudnwjs 4:60be78a172c2 183 hostpc->printf("Adverting Start...\n");
dudnwjs 4:60be78a172c2 184 gapm_set_dev_config_completion_handler(msgid, (struct gapm_cmp_evt *)param, dest_id, src_id,this);
dudnwjs 4:60be78a172c2 185 break;
dudnwjs 4:60be78a172c2 186 case GAPM_SET_DEV_NAME: // Set device name
dudnwjs 4:60be78a172c2 187 break;
dudnwjs 4:60be78a172c2 188 case GAPM_SET_CHANNEL_MAP:// Set device channel map
dudnwjs 4:60be78a172c2 189 break;
dudnwjs 4:60be78a172c2 190 case GAPM_GET_DEV_NAME:// Get Local device name
dudnwjs 4:60be78a172c2 191 break;
dudnwjs 4:60be78a172c2 192 case GAPM_GET_DEV_VERSION:// Get Local device version
dudnwjs 4:60be78a172c2 193 break;
dudnwjs 4:60be78a172c2 194 case GAPM_GET_DEV_BDADDR:// Get Local device BD Address
dudnwjs 4:60be78a172c2 195 break;
dudnwjs 4:60be78a172c2 196 case GAPM_GET_WLIST_SIZE:// Get White List Size.
dudnwjs 4:60be78a172c2 197 break;
dudnwjs 4:60be78a172c2 198 case GAPM_ADD_DEV_IN_WLIST:// Add devices in white list.
dudnwjs 4:60be78a172c2 199 break;
dudnwjs 4:60be78a172c2 200 case GAPM_RMV_DEV_FRM_WLIST:// Remove devices form white list.
dudnwjs 4:60be78a172c2 201 break;
dudnwjs 4:60be78a172c2 202 case GAPM_CLEAR_WLIST:// Clear all devices from white list.
dudnwjs 4:60be78a172c2 203 break;
dudnwjs 4:60be78a172c2 204 case GAPM_ADV_NON_CONN:// Start non connectable advertising
dudnwjs 4:60be78a172c2 205 case GAPM_ADV_UNDIRECT:// Start undirected connectable advertising
dudnwjs 4:60be78a172c2 206 case GAPM_ADV_DIRECT:// Start directed connectable advertising
dudnwjs 4:60be78a172c2 207 break;
dudnwjs 4:60be78a172c2 208 case GAPM_SCAN_ACTIVE:// Start active scan operation
dudnwjs 4:60be78a172c2 209 case GAPM_SCAN_PASSIVE: // Start passive scan operation
dudnwjs 4:60be78a172c2 210 break;
dudnwjs 4:60be78a172c2 211 case GAPM_CONNECTION_DIRECT:// Direct connection operation
dudnwjs 4:60be78a172c2 212 break;
dudnwjs 4:60be78a172c2 213 case GAPM_CONNECTION_AUTO:// Automatic connection operation
dudnwjs 4:60be78a172c2 214 break;
dudnwjs 4:60be78a172c2 215 case GAPM_CONNECTION_SELECTIVE:// Selective connection operation
dudnwjs 4:60be78a172c2 216 break;
dudnwjs 4:60be78a172c2 217 case GAPM_CONNECTION_NAME_REQUEST:// Name Request operation (requires to start a direct connection)
dudnwjs 4:60be78a172c2 218 break;
dudnwjs 4:60be78a172c2 219 case GAPM_RESOLV_ADDR:// Resolve device address
dudnwjs 4:60be78a172c2 220 break;
dudnwjs 4:60be78a172c2 221 case GAPM_GEN_RAND_ADDR:// Generate a random address
dudnwjs 4:60be78a172c2 222 break;
dudnwjs 4:60be78a172c2 223 case GAPM_USE_ENC_BLOCK:// Use the controller's AES-128 block
dudnwjs 4:60be78a172c2 224 break;
dudnwjs 4:60be78a172c2 225 case GAPM_GEN_RAND_NB:// Generate a 8-byte random number
dudnwjs 4:60be78a172c2 226 break;
dudnwjs 4:60be78a172c2 227 case GAPM_DBG_GET_MEM_INFO:// Get memory usage
dudnwjs 4:60be78a172c2 228 break;
dudnwjs 4:60be78a172c2 229 case GAPM_PLF_RESET:// Perform a platform reset
dudnwjs 4:60be78a172c2 230 break;
dudnwjs 4:60be78a172c2 231 case GAPM_GET_DEV_ADV_TX_POWER:// Get device advertising power level
dudnwjs 4:60be78a172c2 232 break;
dudnwjs 4:60be78a172c2 233 }
dudnwjs 4:60be78a172c2 234 }
dudnwjs 4:60be78a172c2 235 }
dudnwjs 4:60be78a172c2 236
dudnwjs 4:60be78a172c2 237 void BleMsgHandler::HandleGapcCmpEvt(unsigned short msgid,
dudnwjs 4:60be78a172c2 238 struct gapc_cmp_evt *param,
dudnwjs 4:60be78a172c2 239 unsigned short dest_id,
dudnwjs 4:60be78a172c2 240 unsigned short src_id)
dudnwjs 4:60be78a172c2 241 {
dudnwjs 4:60be78a172c2 242 switch(param->operation)
dudnwjs 4:60be78a172c2 243 {
dudnwjs 4:60be78a172c2 244 case GAPC_NO_OP: // No operation
dudnwjs 4:60be78a172c2 245 break;
dudnwjs 4:60be78a172c2 246 case GAPC_DISCONNECT: // Disconnect link
dudnwjs 4:60be78a172c2 247 break;
dudnwjs 4:60be78a172c2 248 case GAPC_GET_PEER_NAME: // Retrieve name of peer device
dudnwjs 4:60be78a172c2 249 break;
dudnwjs 4:60be78a172c2 250 case GAPC_GET_PEER_VERSION: // Retrieve peer device version info.
dudnwjs 4:60be78a172c2 251 break;
dudnwjs 4:60be78a172c2 252 case GAPC_GET_PEER_FEATURES: // Retrieve peer device features.
dudnwjs 4:60be78a172c2 253 break;
dudnwjs 4:60be78a172c2 254 case GAPC_GET_CON_RSSI: // Retrieve connection RSSI.
dudnwjs 4:60be78a172c2 255 break;
dudnwjs 4:60be78a172c2 256 case GAPC_GET_PRIVACY: // Retrieve Privacy Info.
dudnwjs 4:60be78a172c2 257 break;
dudnwjs 4:60be78a172c2 258 case GAPC_GET_RECON_ADDR: // Retrieve Reconnection Address Value.
dudnwjs 4:60be78a172c2 259 break;
dudnwjs 4:60be78a172c2 260 case GAPC_SET_PRIVACY: // Set Privacy flag.
dudnwjs 4:60be78a172c2 261 break;
dudnwjs 4:60be78a172c2 262 case GAPC_SET_RECON_ADDR: // Set Reconnection Address Value.
dudnwjs 4:60be78a172c2 263 break;
dudnwjs 4:60be78a172c2 264 case GAPC_UPDATE_PARAMS: // Perform update of connection parameters.
dudnwjs 4:60be78a172c2 265 break;
dudnwjs 4:60be78a172c2 266 case GAPC_BOND: // Start bonding procedure.
dudnwjs 4:60be78a172c2 267 break;
dudnwjs 4:60be78a172c2 268 case GAPC_ENCRYPT: // Start encryption procedure.
dudnwjs 4:60be78a172c2 269 break;
dudnwjs 4:60be78a172c2 270 case GAPC_SECURITY_REQ: // Start security request procedure
dudnwjs 4:60be78a172c2 271 break;
dudnwjs 4:60be78a172c2 272 case GAPC_GET_CON_CHANNEL_MAP: // Retrieve Connection Channel MAP.
dudnwjs 4:60be78a172c2 273 break;
dudnwjs 4:60be78a172c2 274 }
dudnwjs 4:60be78a172c2 275 }
dudnwjs 3:1e70387e1337 276
dudnwjs 5:e11b23f9aacc 277 void BleMsgHandler::HostPcPrint(char *str)
dudnwjs 5:e11b23f9aacc 278 {
dudnwjs 5:e11b23f9aacc 279 if(print_flag == 1)
dudnwjs 5:e11b23f9aacc 280 hostpc->printf("%s",str);
dudnwjs 5:e11b23f9aacc 281 }
dudnwjs 5:e11b23f9aacc 282
dudnwjs 5:e11b23f9aacc 283 void BleMsgHandler::ReceiveToSerialTest(void)
dudnwjs 5:e11b23f9aacc 284 {
dudnwjs 5:e11b23f9aacc 285 SerialM->ReceiveToSerialTest();
dudnwjs 5:e11b23f9aacc 286 }
dudnwjs 5:e11b23f9aacc 287
dudnwjs 5:e11b23f9aacc 288
dudnwjs 3:1e70387e1337 289
dudnwjs 0:a1f6b1ba8a1e 290
dudnwjs 0:a1f6b1ba8a1e 291 }//namespace