123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "include.h"
- #if BT_MAP_EN
- u32 map_start_tick;
- u8 map_time_data[7] = {0};
- void bt_map_start(void);
- int nibble_for_char(char c);
- void bt_map_kick(void)
- {
- memset(map_time_data, 0, 7);
- map_start_tick = tick_get();
- bt_map_start();
- }
- bool bt_map_time_get(u8 *buf, u8 len)
- {
- if (map_time_data[0] == 0) {
- printf("map data empty!\n");
- return false;
- }
- if (tick_check_expire(map_start_tick, 30000)) {
- printf("map data outdated!\n"); //超过30s,数据过时
- return false;
- }
- memcpy(buf, map_time_data, min(len, 7));
- return true;
- }
- void bt_get_time(char *ptr)
- {
- my_printf("-->set time\n");
- //#if UART0_PRINTF_SEL
- bool ios_flag = bt_is_ios_device();
- u16 year = ios_flag? 2000 + nibble_for_char(ptr[2])*10 + nibble_for_char(ptr[3]) : nibble_for_char(ptr[0])*1000 + nibble_for_char(ptr[1])*100 + nibble_for_char(ptr[2])*10 + nibble_for_char(ptr[3]);
- u8 month = nibble_for_char(ptr[4])*10 + nibble_for_char(ptr[5]);
- u8 day = nibble_for_char(ptr[6])*10 + nibble_for_char(ptr[7]);
- u8 hour = nibble_for_char(ptr[9 - ios_flag])*10 + nibble_for_char(ptr[10 - ios_flag]);
- u8 min = nibble_for_char(ptr[11 - ios_flag])*10 + nibble_for_char(ptr[12 - ios_flag]);
- u8 sec = nibble_for_char(ptr[13 - ios_flag])*10 + nibble_for_char(ptr[14 - ios_flag]);
- if ((year >= 2000) && (year <= 3000) && (month <= 12) && (day <= 31) && (hour <= 24) && (min <= 60) && sec <= 60) {
- ios_flag ? printf("IOS get time:\n") : printf("Android get time:\n");
- printf("date:%04d.%02d.%02d time:%02d:%02d:%02d\n",year,month,day,hour,min,sec);
- memcpy(&map_time_data[0], &year, 2);
- map_time_data[2] = month;
- map_time_data[3] = day;
- map_time_data[4] = hour;
- map_time_data[5] = min;
- map_time_data[6] = sec;
- if (!ios_flag) {
- sys_cb.map_retry = 0;
- }
- msg_enqueue(EVT_BT_MAP_DONE);
- } else {
- // if(!ios_flag){
- // sys_cb.map_retry = 1;
- // bt_map_start();
- // }
- }
- //#endif
- }
- void bt_map_data_callback(uint8_t *packet) //获取时间例程
- {
- char *ptr = (char *)(packet+13);
- bt_get_time(ptr);
- }
- #endif
|