BLE fota Robot Demo

Dependencies:   mbed-rtos mbed mbed_fota_fan_control

Fork of mbed_fota_lamp_control by KIM HyoengJun

Committer:
dudnwjs
Date:
Tue Oct 13 06:35:19 2015 +0000
Revision:
13:e714e2971c49
Parent:
12:e3d3676753cc
lamp demo;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudnwjs 8:9eec2c246a85 1 /**
dudnwjs 8:9eec2c246a85 2 * @file main.cpp
dudnwjs 8:9eec2c246a85 3 * @brief interface configuration & main loop start
dudnwjs 8:9eec2c246a85 4 * Copyright 2015 SEVENCORE Co., Ltd.
dudnwjs 8:9eec2c246a85 5 *
dudnwjs 8:9eec2c246a85 6 * @author HyeongJun Kim
dudnwjs 8:9eec2c246a85 7 * @version 1.0.0
dudnwjs 8:9eec2c246a85 8 * @since 2015-08-17
dudnwjs 8:9eec2c246a85 9 */
dudnwjs 8:9eec2c246a85 10
dudnwjs 8:9eec2c246a85 11
dudnwjs 0:a1f6b1ba8a1e 12 #include "mbed.h"
dudnwjs 12:e3d3676753cc 13 #include "cmsis_os.h"
dudnwjs 1:5cf3a6c969be 14 #include "BleMsgHandler.h"
dudnwjs 12:e3d3676753cc 15 #include "fan_control_task.h"
dudnwjs 12:e3d3676753cc 16 #include "dialog_fota_config.h"
dudnwjs 3:1e70387e1337 17 #include "app.h"
dudnwjs 0:a1f6b1ba8a1e 18
dudnwjs 0:a1f6b1ba8a1e 19 Serial hostpc(USBTX,USBRX);
dudnwjs 0:a1f6b1ba8a1e 20 Serial device(p13,p14);
dudnwjs 6:8dd20294b2aa 21 LocalFileSystem local("local"); // Create the local filesystem
dudnwjs 0:a1f6b1ba8a1e 22 DigitalOut myled(LED1);
dudnwjs 6:8dd20294b2aa 23 DigitalOut myled2(LED2);
dudnwjs 6:8dd20294b2aa 24 DigitalOut myled3(LED3);
dudnwjs 6:8dd20294b2aa 25 DigitalOut myled4(LED4);
dudnwjs 0:a1f6b1ba8a1e 26
dudnwjs 12:e3d3676753cc 27 DigitalOut port18(p18);//mid
dudnwjs 12:e3d3676753cc 28 DigitalOut port19(p19);//low
dudnwjs 12:e3d3676753cc 29 DigitalOut port20(p20);//high
dudnwjs 12:e3d3676753cc 30
dudnwjs 13:e714e2971c49 31 DigitalOut port21(p21);//low
dudnwjs 13:e714e2971c49 32 DigitalOut port22(p22);//high
dudnwjs 13:e714e2971c49 33
dudnwjs 12:e3d3676753cc 34 uint8_t Timer_flag;
dudnwjs 12:e3d3676753cc 35 uint32_t Residual_Time;
dudnwjs 12:e3d3676753cc 36
dudnwjs 1:5cf3a6c969be 37 using namespace sevencore_fota;
dudnwjs 1:5cf3a6c969be 38
dudnwjs 12:e3d3676753cc 39
dudnwjs 12:e3d3676753cc 40 void FanTimer(void const *threadarg)
dudnwjs 12:e3d3676753cc 41 {
dudnwjs 12:e3d3676753cc 42 Timer_flag = 0;
dudnwjs 12:e3d3676753cc 43 Residual_Time = 0;
dudnwjs 12:e3d3676753cc 44 BleMsgHandler *BMH;
dudnwjs 12:e3d3676753cc 45 BMH = (struct BleMsgHandler *) threadarg;
dudnwjs 12:e3d3676753cc 46 while(true)
dudnwjs 12:e3d3676753cc 47 {
dudnwjs 12:e3d3676753cc 48 if( Timer_flag == 1 && Residual_Time == 0 )
dudnwjs 12:e3d3676753cc 49 {
dudnwjs 12:e3d3676753cc 50 hostpc.printf("Power off!!\n");
dudnwjs 13:e714e2971c49 51 if( port21 == 1 || port22 == 1 )
dudnwjs 13:e714e2971c49 52 port21 = port22 = 0;
dudnwjs 12:e3d3676753cc 53 Timer_flag = 0;
dudnwjs 12:e3d3676753cc 54 /*{
dudnwjs 12:e3d3676753cc 55 uint8_t fota_normal = 0;
dudnwjs 12:e3d3676753cc 56 uint8_t *msg;
dudnwjs 12:e3d3676753cc 57 struct fan_control_set_char_val_req char_set_req;
dudnwjs 12:e3d3676753cc 58 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE);
dudnwjs 12:e3d3676753cc 59 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 60 char_set_req.char_code = FAN_CONTROL_POWER_STATE_CHAR;
dudnwjs 12:e3d3676753cc 61 char_set_req.val_len = FAN_CONTROL_MIN_SIZE;
dudnwjs 12:e3d3676753cc 62 memcpy(&char_set_req.val[0], &fota_normal, sizeof(fota_normal));
dudnwjs 12:e3d3676753cc 63
dudnwjs 12:e3d3676753cc 64 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 65
dudnwjs 12:e3d3676753cc 66 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ
dudnwjs 12:e3d3676753cc 67 ,TASK_FAN_CONTROL, TASK_GTL
dudnwjs 12:e3d3676753cc 68 ,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE)
dudnwjs 12:e3d3676753cc 69 ,&char_set_req,msg );
dudnwjs 12:e3d3676753cc 70 // Send the message
dudnwjs 12:e3d3676753cc 71 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 72 free(msg);
dudnwjs 12:e3d3676753cc 73 }
dudnwjs 12:e3d3676753cc 74 */
dudnwjs 12:e3d3676753cc 75
dudnwjs 12:e3d3676753cc 76 }
dudnwjs 12:e3d3676753cc 77
dudnwjs 12:e3d3676753cc 78 if( Timer_flag == 1 )
dudnwjs 12:e3d3676753cc 79 {
dudnwjs 12:e3d3676753cc 80 osDelay(1000);
dudnwjs 12:e3d3676753cc 81 if(Residual_Time > 0){
dudnwjs 12:e3d3676753cc 82 hostpc.printf("Residual Time = %d, minus 1 second!!\n",Residual_Time );
dudnwjs 12:e3d3676753cc 83 Residual_Time--;
dudnwjs 12:e3d3676753cc 84 }
dudnwjs 12:e3d3676753cc 85 }
dudnwjs 12:e3d3676753cc 86 }
dudnwjs 12:e3d3676753cc 87 }
dudnwjs 12:e3d3676753cc 88
dudnwjs 12:e3d3676753cc 89 void t0(void const *argument) {FanTimer(argument);}
dudnwjs 12:e3d3676753cc 90 osThreadDef(t0, osPriorityNormal, DEFAULT_STACK_SIZE);
dudnwjs 12:e3d3676753cc 91
dudnwjs 7:3478c46cceef 92 void led_setting_one(void){
dudnwjs 6:8dd20294b2aa 93 myled = 1;
dudnwjs 6:8dd20294b2aa 94 myled2 = 1;
dudnwjs 6:8dd20294b2aa 95 myled3 = 1;
dudnwjs 6:8dd20294b2aa 96 myled4 = 1;
dudnwjs 6:8dd20294b2aa 97 }
dudnwjs 6:8dd20294b2aa 98
dudnwjs 7:3478c46cceef 99 void led_setting_zero(void){
dudnwjs 12:e3d3676753cc 100 myled = 1;
dudnwjs 6:8dd20294b2aa 101 myled2 = 0;
dudnwjs 6:8dd20294b2aa 102 myled3 = 0;
dudnwjs 6:8dd20294b2aa 103 myled4 = 0;
dudnwjs 6:8dd20294b2aa 104 }
dudnwjs 6:8dd20294b2aa 105
dudnwjs 6:8dd20294b2aa 106 int main() {
dudnwjs 8:9eec2c246a85 107 wait(0.5);
dudnwjs 8:9eec2c246a85 108 myled = 1;
dudnwjs 8:9eec2c246a85 109 wait(0.5);
dudnwjs 8:9eec2c246a85 110 myled = 0;
dudnwjs 8:9eec2c246a85 111 wait(0.5);
dudnwjs 8:9eec2c246a85 112 myled = 1;
dudnwjs 8:9eec2c246a85 113 wait(0.5);
dudnwjs 8:9eec2c246a85 114 myled = 0;
dudnwjs 8:9eec2c246a85 115 wait(0.5);
dudnwjs 12:e3d3676753cc 116 led_setting_zero();
dudnwjs 8:9eec2c246a85 117 wait(0.5);
dudnwjs 5:e11b23f9aacc 118 hostpc.baud(9600);
dudnwjs 8:9eec2c246a85 119 wait(0.5);
dudnwjs 3:1e70387e1337 120 device.baud(115200);
dudnwjs 6:8dd20294b2aa 121 device.set_flow_control(device.RTSCTS,P2_7,p12);
dudnwjs 8:9eec2c246a85 122 wait(0.5);
dudnwjs 3:1e70387e1337 123
dudnwjs 5:e11b23f9aacc 124 BleMsgHandler myfota(&device,&hostpc);
dudnwjs 12:e3d3676753cc 125 osThreadCreate( osThread(t0), (void *)&myfota );
dudnwjs 6:8dd20294b2aa 126
dudnwjs 1:5cf3a6c969be 127 myfota.PrintTitle();
dudnwjs 3:1e70387e1337 128 app_rst_gap(&myfota);
dudnwjs 3:1e70387e1337 129
dudnwjs 8:9eec2c246a85 130 for(int i = 0; i < 200; i++) {
dudnwjs 4:60be78a172c2 131 myfota.BleReceiveMsg();
dudnwjs 4:60be78a172c2 132 myfota.BleMsgHandle();
dudnwjs 4:60be78a172c2 133 }
dudnwjs 3:1e70387e1337 134
dudnwjs 0:a1f6b1ba8a1e 135 while(1) {
dudnwjs 0:a1f6b1ba8a1e 136 myled = 1;
dudnwjs 0:a1f6b1ba8a1e 137 wait(0.5);
dudnwjs 0:a1f6b1ba8a1e 138 myled = 0;
dudnwjs 0:a1f6b1ba8a1e 139 wait(0.5);
dudnwjs 0:a1f6b1ba8a1e 140 }
dudnwjs 5:e11b23f9aacc 141
dudnwjs 0:a1f6b1ba8a1e 142 }