#ifdef ENABLE_SLIP\r
slip_uart_init();\r
#endif\r
-#ifdef SUPPORT_CAT1_SERVICE\r
- cat1_server_init();\r
-#endif\r
+\r
\r
#ifdef ENABLE_CYWEE\r
uapi_cywee_service_init();\r
\r
#ifdef SUPPORT_BLE_SERVICE\r
if(start_ble_service_on_bootup_flag())\r
- svr_bluetooth_init();\r
+ {\r
+ PRINT("start custom protocol classic bt ble service !\r\n");\r
+ openBle();\r
+\r
+ }\r
#endif \r
\r
#ifdef SUPPORT_ALIPAY_SEC\r
uapi_alipay_svr_init();\r
#endif\r
// ble_hid_server_init();\r
+\r
+#ifdef SUPPORT_CAT1_SERVICE\r
+ cat1_server_init();\r
+#endif\r
+\r
+ startup_post_init();\r
+\r
set_startup_finish_flag();\r
\r
\r
void SetLanguage(int languageid);
int GetLanguage();
void SetLanguageCode(char *languagecode);
- const char *GetLanguageCode(void);
+ std::string GetLanguageCode(void);
- char *Getimei();
- char *GetpyVer();
- char *GetmoderVer();
+ std::string Getimei();
+ std::string GetpyVer();
+ std::string GetmoderVer();
void Setimei(char *str);
void SetpyVer(char *str);
private:
configmodel_item configmodel_item_key_name[CONFIGMODEL_ITEM_MAX] =
{
- {ConfigDataType::DATATYPE_BOOL, "ClassicBT_Service_On", "true" },//CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
+ {ConfigDataType::DATATYPE_BOOL, "ClassicBT_Service_On", "false" },//CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
{ConfigDataType::DATATYPE_INT, "ScreenBrightness", "255" },//CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE,
{ConfigDataType::DATATYPE_INT, "ScreenOffTimeoutValue", "5000" },//CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE, 自动息屏时间,默认5秒 5000ms
{ConfigDataType::DATATYPE_BOOL, "Cat1_Service_On", "false" },//CONFIGMODEL_ITEM_CAT1_SERVICE_ON, // 关机前Cat1 Service启动着,则重启仍然启动,反之亦然
ConfigModel::~ConfigModel()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " ConfigModel::~ConfigModel");
+ //手表全生命周期存在,所以不考虑析构释放内存
}
ConfigModel *ConfigModel::GetInstance()
set_condigData_String(CONFIGMODEL_ITEM_LANGUAGE_CODE,languagecode);
}
- const char *ConfigModel::GetLanguageCode(void)
+ std::string ConfigModel::GetLanguageCode(void)
{
- return get_configData_string(CONFIGMODEL_ITEM_LANGUAGE_CODE).c_str();
+ return get_configData_string(CONFIGMODEL_ITEM_LANGUAGE_CODE);
}
- char *ConfigModel::Getimei()
+ std::string ConfigModel::Getimei()
{
- return (char*)get_configData_string(CONFIGMODEL_ITEM_CAT1_IMEI).c_str();
+ return get_configData_string(CONFIGMODEL_ITEM_CAT1_IMEI);
}
- char *ConfigModel::GetpyVer()
+ std::string ConfigModel::GetpyVer()
{
- return (char*)get_configData_string(CONFIGMODEL_ITEM_CAT1_PYVER).c_str();
+ return get_configData_string(CONFIGMODEL_ITEM_CAT1_PYVER);
}
- char *ConfigModel::GetmoderVer()
+ std::string ConfigModel::GetmoderVer()
{
- return (char*)get_configData_string(CONFIGMODEL_ITEM_CAT1_MODEMVER).c_str();
+ return get_configData_string(CONFIGMODEL_ITEM_CAT1_MODEMVER);
}
void ConfigModel::Setimei(char *str)
*/
bool start_ble_service_on_bootup_flag(void)
{
- return OHOS::ConfigModel::GetInstance()->GetCat1_4Gability();
+ return OHOS::ConfigModel::GetInstance()->GetClassicBlueToothState();
}
/***
* Cat1服务是否开启
LanguageSwitchModel::LanguageSwitchModel()
{
p_ConfigModel = ConfigModel::GetInstance();
- if (p_ConfigModel->GetLanguageCode() != nullptr)
+ // if (p_ConfigModel->GetLanguageCode().c_str() != nullptr)
{
//printf("%s\n", p_ConfigModel->GetLanguageCode());
- CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode());
+ CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode().c_str());
}
}
.text = "",\r
.lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
};\r
- Config.text = ConfigModel::GetInstance()->Getimei();\r
+ Config.text = const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());\r
+\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Imei %s , %s \r\n",Config.text,ConfigModel::GetInstance()->Getimei().c_str());\r
+\r
+\r
+\r
AlgorithmVersion = InitLabel(Config);\r
if (AlgorithmVersion == nullptr)\r
{\r
/* -------------------------------------------------------------------------- */\r
uint8_t btaddr[6] ={0};\r
uint8_t btaddr_str[64]={0};\r
- uint32_t len = 64;\r
+ uint32_t len = 6;\r
errcode_t ret = uapi_get_nv_btaddr((uint8_t*)btaddr,&len);\r
sprintf((char*)btaddr_str , "%02X:%02X:%02X:%02X:%02X:%02X",btaddr[0],btaddr[1],btaddr[2],btaddr[3],btaddr[4],btaddr[5]);\r
\r
SystemAboutTheWatchScrollView->Add(LANAddressTitle);\r
/* -------------------------------------------------------------------------- */\r
\r
- uint8_t ble_name[20] = {0};\r
- uint32_t ble_name_len ;\r
+ uint8_t ble_name[20] = {0};\r
+ uint32_t ble_name_len = sizeof(ble_name) ;\r
ret = uapi_get_nv_btname(ble_name, &ble_name_len);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get btname %s ,ret 0x%X\n",ble_name,ret);\r
\r
.text = "HarmonyOS Sans",\r
.lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
};\r
- Config.text=ConfigModel::GetInstance()->GetmoderVer();\r
+ Config.text=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modemver %s , %s \r\n",Config.text,ConfigModel::GetInstance()->GetmoderVer().c_str());\r
+\r
CAT1mode = InitLabel(Config);\r
if (CAT1mode == nullptr)\r
{\r
.height = 30,\r
.fontSize = 26,\r
.lineHeigh = 30,\r
- .text = "HarmonyOS Sans",\r
+ .text = "PyVer_3",\r
.lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
};\r
- Config.text=ConfigModel::GetInstance()->GetpyVer();\r
+ Config.text=const_cast<char*>(ConfigModel::GetInstance()->GetpyVer().c_str());\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "pyver %s , %s \r\n",Config.text,ConfigModel::GetInstance()->GetpyVer().c_str());\r
+\r
pymode = InitLabel(Config);\r
if (CAT1mode == nullptr)\r
{\r
{
if(is_new_cat1_version)
{
- char *imei_str= ConfigModel::GetInstance()->Getimei();
- char * version_buf=ConfigModel::GetInstance()->GetmoderVer();
+ char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ char * version_buf=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());
sprintf((char *)uri,"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",version_buf,imei_str);
cat1_ota_update((char *)"0");
container_updating->SetVisible(true);
}
- char *imei_str= ConfigModel::GetInstance()->Getimei();
- char * version_buf=ConfigModel::GetInstance()->GetmoderVer();
+ char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ char * version_buf=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());
sprintf((char *)uri,
"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",
version_buf,imei_str);
}
display_api->set_screen_set_keepon_timeout(-1);
memset(uri,0,256);
- char *imei_str= ConfigModel::GetInstance()->Getimei();
+ char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
sprintf((char *)uri,"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",version_buf,imei_str);
custom_start_ota_download_ui_1(uri,(uint8_t*)Path,true);
#else
{ HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源 拉高有效
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源 拉高有效
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 心率复位 PPG reset
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1复位 CAT1_RESET_N 拉低有效
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1复位 CAT1_RESET_N 拉低有效
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info 检测是否充满电
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 唤醒 CAT1 ,输出
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 唤醒 蓝牙 ,输入
*/
-#define DEFAULT_POWERON_CAT1 0
+//默认开启Cat1 然后再根据配置决定是否关闭.
+#define DEFAULT_POWERON_CAT1 1
+
//需要配置默认输出的,以及需要配置默认输入中断函数的。
const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);
uapi_tcxo_delay_ms(10); /* delay 10 ms */
}
-#define USE_OUTPUT_CTL 1
+#define USE_OUTPUT_CTL 0
static void lcd_drv_power_off(void)
{
#if USE_OUTPUT_CTL
void uapi_cat1_remove_audio_vote(void)
{
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_AUDIO);
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
if (cnt == 1) {
- uapi_pm_remove_sleep_veto(PM_ID_AUDIO);
+ uapi_pm_remove_sleep_veto(PM_ID_CAT1);
} else {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has delete pm_id_audio vote\r\n");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has delete pm_id_cat1 vote\r\n");
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU SLEEP SUCCESS\r\n");
}
void uapi_cat1_add_audio_vote(void)
{
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_AUDIO);
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
if (cnt == 0) {
- uapi_pm_add_sleep_veto(PM_ID_AUDIO);
+ uapi_pm_add_sleep_veto(PM_ID_CAT1);
} else {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_audio vote\r\n");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU WAKEUP SUCCESS\r\n");
}
g_timer_time_sync = osTimerNew((osTimerFunc_t)time_sync_func, osTimerPeriodic, NULL, NULL);
- if ( poweron_cat1_on_bootup_flag() )
- {
- uapi_cat1_power_on(1);
- uapi_cat1_reset(0);
- }
+ // if ( poweron_cat1_on_bootup_flag() )
+ // {
+ // uapi_cat1_power_on(1);
+ // uapi_cat1_reset(0);
+ // }
if (g_timer_time_sync == NULL)
printf("g_timer_time_sync create failed\n");
{
return doing_shutdown_or_reboot;
}
+
+void startup_post_init_task(void)
+{
+
+ PRINT("startup_post_init_task !\r\n");
+
+ LOS_Msleep(5000);
+ if ( poweron_cat1_on_bootup_flag() )
+ {
+ PRINT("PowerOn Cat1 !\r\n");
+
+ uapi_cat1_power_on(1);
+ uapi_cat1_reset(0);
+ }else{
+ PRINT("PowerOff Cat1 !\r\n");
+
+ uapi_cat1_power_on(0);
+ uapi_cat1_reset(1);
+ }
+
+}
+
+void startup_post_init(void)
+{
+ PRINT("startup_post_init !\r\n");
+ app_task_definition_t taskcfg={0};
+ taskcfg.create_queue_handle = NULL;
+ taskcfg.attr.name="startup_post_init_task";
+ taskcfg.attr.priority = osPriorityNormal;
+ taskcfg.attr.stack_size = 0x1000;
+ taskcfg.func = startup_post_init_task;
+ taskcfg.use_mem = USE_EXTEND_MEM;
+
+ errcode_t ret=uapi_create_osThread_custom(&taskcfg);
+ if(ret != ERRCODE_SUCC)
+ {
+ PRINT("create shutdown_reboot_prejobs thread failed %d!\r\n",ret);
+
+ }
+}
+
#include "upg.h"
#include "upg_porting.h"
errcode_t uaip_cmd_update_request(void)
{
errcode_t ret ;
- srand(time(0));
uint8_t bd_addr[BD_ADDR_LEN]={0};
uint8_t name[BTSDK_DEVNAME_LEN]={0};
uint32_t addrlen = sizeof(bd_addr);
printf("uapi_get_nv_btaddr failed ret %d , addrlen %d\n",ret,addrlen);
return ERRCODE_FAIL;
}
+
//如果 281106856959
if ( bd_addr[5] == 0x59 &&
bd_addr[4] == 0x69 &&
bd_addr[1] == 0x11 &&
bd_addr[0] == 0x28 )
{
+
+ uint8_t soc_id[20]; // 20 is soc id length
+ uapi_soc_read_id(soc_id, 20); // 20 is soc id length
+ uint16_t sum = 0x0;
+ printf("[soc id:]\r\n");
+ for (uint8_t i = 0; i < 20; i += 2) { // 20 is soc id length, 2 means use 16bits
+ uint16_t ptmp16= *((uint16_t *)&soc_id[i]);
+ sum += ptmp16;
+ printf("0x%04X ", ptmp16);
+ if ((i + 2) % 8 == 0) { printf("\r\n"); } // 2&8 will word wrap
+ }
+ printf("get socid sum 0x%04X\r\n",sum);
+ srand(sum);
//默认是:281106856959
printf("是默认值,修改地址\n");
- bd_addr[5] = rand() % 0xFF;
- bd_addr[4] = rand() % 0xFF;
bd_addr[3] = rand() % 0xFF;
+ bd_addr[4] = rand() % 0xFF;
+ bd_addr[5] = rand() % 0xFF;
+
printf("uapi_set_nv_btaddr : ******%02x%02x%02x\n", bd_addr[3], bd_addr[4], bd_addr[5]);
ret = uapi_set_nv_btaddr(bd_addr, addrlen);
}
-
+
+#if 0
uint32_t namelen = sizeof(name);
ret = uapi_get_nv_btname(name,&namelen);
if (ret != ERRCODE_SUCC) {
printf("uapi_get_nv_btname failed ret %d , namelen %d\n",ret,namelen);
return ERRCODE_FAIL;
}
-
if ( strcmp((char*)name,"WatchSoar") == 0)
{
//默认是:WatchSoar
return ERRCODE_FAIL;
}
}
+#endif
return ERRCODE_SUCC;
}
"key_status": "alive",
"structure_type": "btsrv_local_device_info_t",
"attributions": 1,
- "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","S","o","a","r",0]]
+ "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","D","e","m","o",0]]
},
"btsrv_paired_device_info":{
"key_id": "0x2102",
PM_ID_HEART,//新增,心率芯片
PM_ID_MOTOR,//新增,马达
PM_ID_GSENSOR,//新增,加速计
+ PM_ID_CAT1,//Cat1 communication
PM_ID_MAX,
} pm_id_t;