* @Author: penglei 1624952103@qq.com
* @Date: SLEPPNOTIFY24-06-26 19:36:48
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-07-31 17:21:20
+ * @LastEditTime: 2025-08-06 10:42:09
* @FilePath:
* /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
* @Description:
#endif
//获取最新的出睡时间
- sleep_fall_asleep_timestamp = nap_wake_up_timestamp>sleep_wake_up_timestamp?nap_fall_asleep_timestamp:sleep_fall_asleep_timestamp;
+ sleep_update_time = nap_wake_up_timestamp>sleep_wake_up_timestamp?nap_wake_up_timestamp:sleep_wake_up_timestamp;
OHOS::SleepModel::GetInstance().set_sleep_total(sleep_total);
OHOS::SleepModel::GetInstance().set_nap_total(nap_total);
# 'AILPAY_SUPPORT',
'SUPPORT_FACT_SERVICE',
# 'MEMORY_CORRUPTION',
+ # 'SUPPORT_GNSS',
+ # 'DISABLE_UART_LOG',
+ # 'CONFIG_GNSS_UART_WITH_FLOWCTRL',
+ # 'DOWNLOAD_GNSS_SWITCH',
],
#添加自定义应用
uint32_t data = 0;
switch (type)
{
- case STEP:
- data = stepcount;
- break;
- case HISTORY_STEP:
- data = history_step;
- break;
- case HISTORY_DISTANCE:
- data = history_distances;
- break;
- case HISTORY_CALORIES:
- data = history_calories;
- break;
- case HISTORY_FAT:
- data = history_fat;
- break;
- case HISTORY_STEP_:
- data = history_step_;
- break;
- case HISTORY_DISTANCE_:
- data = history_distances_;
- break;
- case HISTORY_CALORIES_:
- data = history_calories_;
- break;
- case HISTORY_FAT_:
- data = history_fat_;
- break;
- case NEW_DISTANCE:
- data = new_distance;
- break;
- case NEW_CALORIES:
- data = new_calories;
- break;
- case NEW_FAT:
- data = new_fat;
- default:
- break;
+ case STEP:
+ data = stepcount;
+ break;
+ case HISTORY_STEP:
+ data = history_step;
+ break;
+ case HISTORY_DISTANCE:
+ data = history_distances;
+ break;
+ case HISTORY_CALORIES:
+ data = history_calories;
+ break;
+ case HISTORY_FAT:
+ data = history_fat;
+ break;
+ case HISTORY_STEP_:
+ data = history_step_;
+ break;
+ case HISTORY_DISTANCE_:
+ data = history_distances_;
+ break;
+ case HISTORY_CALORIES_:
+ data = history_calories_;
+ break;
+ case HISTORY_FAT_:
+ data = history_fat_;
+ break;
+ case NEW_DISTANCE:
+ data = new_distance;
+ break;
+ case NEW_CALORIES:
+ data = new_calories;
+ break;
+ case NEW_FAT:
+ data = new_fat;
+ break;
+ default:
+ break;
}
- return 0;
+ return data;
}
void cywee_set_sport_data(uint32_t data,uint8_t type)
void cywee_wearstatus_update(int wearstatus)
{
-#if 0
+#if 1
uapi_dev_runtime_set_wear_status(wearstatus);
memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
csd.sensorType = CUSTOM_OFFBODY_DETECT;
if((int)sensorEVT->fData[1] == CUSTOM_OFFBODY_DETECT)
{
CWM_OS_dbgPrintf("CUSTOM_OFFBODY_DETECT !!! \r\n");
-#if 0
+#if 1
if((int)sensorEVT->fData[2] == 1)
{
#ifdef SUPPORT_PPG_SERVICE
msg_count++;\r
if(msg_count >= 3)\r
{\r
+\r
+#ifdef SUPPORT_PPG_BLE_SERVICE\r
+ if(uapi_dev_runtime_get_hrs_ble_status())\r
+ {\r
+ ble_ppgtest_server_send_input_report(&hrs_result,1);\r
+ }\r
+#endif\r
+\r
msg_count = 0;\r
// if(func != NULL)\r
// {\r
// printf("ble_hid_server_send_input_report:%d %d %d",data[0],data[1],len);\r
gatts_ntf_ind_t param = {0};\r
param.attr_handle = (uint16_t)g_ppgtest_notify_report_att_hdl;\r
- param.value_len = len;\r
- param.value = bt_os_new(len);\r
+ param.value_len = len + 1;\r
+ param.value = bt_os_new(param.value_len);\r
if (param.value == NULL) {\r
printf( "[ppgtest][ERROR]send input report new fail\r\n");\r
return ERRCODE_BT_MALLOC_FAIL;\r
}\r
- if (memcpy_s(param.value, param.value_len, data, len) != EOK) {\r
+ if (memcpy_s(param.value + 1, param.value_len, data, len) != EOK) {\r
printf( "[ppgtest][ERROR]send input report memcpy fail\r\n");\r
bt_os_free(param.value);\r
return ERRCODE_BT_FAIL;\r
}\r
errcode_t ret = 0;\r
\r
- if(g_ble_conn_id==0)\r
- return ERRCODE_BT_FAIL;\r
+ // if(g_ble_conn_id==0)\r
+ // {\r
+ // printf( "g_ble_conn_id==0\r\n");\r
+ // return ERRCODE_BT_FAIL;\r
+ // }\r
\r
ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, ¶m);\r
//printf("ble_ppgtest_server_send_input_report: 0x%x g_ble_conn_id:%d g_ppgtest_notify_report_att_hdl:%d\r\n",\r
return ERRCODE_BT_SUCCESS;\r
}\r
\r
-\r
void ble_ppgtest_store_report_handle(uint16_t srvc_handle)\r
{\r
printf("g_ppgtest_notify_report_att_hdl: 0x%X\r\n",srvc_handle);\r
return 0;
}
-static uint32_t get_current_timestamp(void)
-{
- uint32_t timestamp = 0;
- struct timeval current_time = {0};
- if (gettimeofday(¤t_time, NULL)) {
- return 0;
- }
- struct tm tm;
- localtime_r(¤t_time.tv_sec, &tm);
- timestamp = (uint32_t)current_time.tv_sec;
- return timestamp;
-}
-/*获取秒级时间戳*/
-static errcode_t get_timestampe_ss(uint32_t *tm)
-{
- if (tm == NULL) {
- return ERRCODE_FAIL;
- }
-
- *tm = get_current_timestamp();
- //printf("[timestamp:%u]\n", *tm);
- return ERRCODE_SUCC;
-}
-
-
static void battery_timer_start_check_released(uint32_t rtc_ms)
{
if (osTimerIsRunning(g_battery_timer)) osTimerStop(g_battery_timer);
adv_data_len = sizeof(ble_adv_type);\r
// WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"adv_data_len!!!!:%d\r\n",adv_data_len);\r
\r
+ // 2. 添加心率服务UUID(0x180D)\r
+ if(uapi_dev_runtime_get_hrs_ble_status())\r
+ {\r
+ // 格式:[长度(0x03)][类型(0x03)][UUID低字节(0x0D)][UUID高字节(0x18)]\r
+ if (adv_data_len + 4 <= BLE_ADV_DATA_MAX_LENGTH) {\r
+ adv_data[adv_data_len++] = 0x03; // 长度:3字节(类型+UUID)\r
+ adv_data[adv_data_len++] = 0x03; // 类型:16位服务UUID列表\r
+ adv_data[adv_data_len++] = 0x0D; // 心率服务UUID低字节\r
+ adv_data[adv_data_len++] = 0x18; // 心率服务UUID高字节\r
+ } else {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "No space for heart rate UUID");\r
+ }\r
+ }\r
+\r
adv_data[adv_data_len++] = 0x0f;//长度 \r
adv_data[adv_data_len++] = 0xff;//数据类型 manufactory data\r
adv_data[adv_data_len++] = 'J';\r