/* Device On Message */ void ble_device_on_message(uint8_t type, uint16_t length, uint8_t* value) { /*echo data*/ ble_device_send(type, length, value); }
void dev_inf_dev_id_req(uint8_t type, uint16_t length, uint8_t* data) { uint8_t buff[128]; ble_device_get_id(buff, 16); ble_device_send(0x80, 16, buff); }
void system_on_message(uint8_t type, uint16_t length, uint8_t* data) { uint8_t vid_pid_info[8] ; uint32_t err_code; uint8_t len; uint8_t err_state[1] = {0x00}; uint8_t value[2]; switch (type) { case 0x80: //divice id dev_inf_dev_id_req(type, length, data); break; case 0x81: // OTA ota_on_message(type, length, data); break; case 0x82: //enter OTA Mode enter_ota_mode(type, length, data); break; case 0x83: //device statue req device_current_statue_req(type, length, data); break; case 0x84: //device option device_option(type, length, data); break; case 0x85: err_code = data_storage_read(0x10, &len, vid_pid_info); if(err_code == NRF_SUCCESS){ ble_device_send(type,len,vid_pid_info); }else{ ble_device_send(type,1,err_state); } break; case 0x86: ble_device_send(type,8,FIRMWARE_VERSION); break; case 0x87: if(length == 0x0008){ err_code = manufacturer_storage_write(0x10, length, data); ble_device_send(type,1,err_state); } break; } }
void on_adc_complete(void* args) { adc_result_t *result = (adc_result_t*)args; uint8_t buffer[2]; buffer[0] = result->value >> 8; buffer[1] = result->value & 0xff; ble_device_send(0, 2, buffer); }
/*Accept humidity,tempreture data*/ void read_temp_hum(void* arg) { uint8_t temp[2] = {0}; uint16_t temp_1 = 0; // /*humity*/ BSP_HUM_TEMP_GetHumidity(&humidity); temp_1 = (uint16_t)(humidity*100); temp[0] = temp_1 >> 8; temp[1] = temp_1 & 0xFF; ble_device_send(0x01, 2, temp); /*Temperature*/ BSP_HUM_TEMP_GetTemperature(&temperature); temp_1 = (uint16_t)(temperature*100); temp[0] = temp_1 >> 8; temp[1] = temp_1 & 0xFF; ble_device_send(0x00, 2, temp); run_after_delay(read_temp_hum, NULL, 2000); }
static void sensor_print(void* arg) { static int counter = 0; if (++counter > 5) { counter = 0; //static char st = '$'; //UART_Transmit((uint8_t *)&st, 1); //UART_Transmit((uint8_t *)q, sizeof(q)); if (sendFLAG) { ble_device_send(0x01, 16, (uint8_t*)q); } } }
static void read_acc(void* arg) // sensor read accelerometer { JSensor_AXIS_Typedef tdef; int8_t ACC[6], GRO[6]; if (!running) return; tdef.ACC = ACC; tdef.GRO = GRO; if (JSENSOR_OK == jsensor_app_read_sensor(JSENSOR_TYPE_MOTION_6AXIS, (void *)&tdef)) { ble_device_send(0x04, 6, (uint8_t*)ACC); } run_after_delay(read_acc, NULL, UPDATE_INTERVAL); }