// 设置状态为小睡\r
OHOS::SleepModel::GetInstance().set_sleep_state(OHOS::SLEEPSTATE::WAKE);\r
LOS_Msleep(1000);\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_MODE, NULL);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);\r
}\r
\r
if(sedentary_switch)\r
{\r
if (curTime.tm_hour == ((sedentary_time & 0XFF000000) >> 24) && curTime.tm_min == ((sedentary_time & 0X00FF0000) >> 16) && curTime.tm_sec == 0)\r
{\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
- LOS_Msleep(1000);\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OPEN_SEDENTARY, NULL);\r
}\r
else if (curTime.tm_hour == ((sedentary_time & 0X0000FF00) >> 8) && curTime.tm_min == (sedentary_time & 0X000000FF) && curTime.tm_sec == 0)\r
{\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
- LOS_Msleep(1000);\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_MODE, NULL);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CLOSE_SEDENTARY, NULL);\r
}\r
}\r
}\r
Exercisetype sportType; // 训练类型(0:健身类 1:跳舞类 2:休闲运动 3:球类 4:水上运动:5:冰上运动:6:极限运动:7:其他)
UIResourceTextId sportId; // 训练Id
ExerciseTag sportTagType; // 训练目标类型(0: 距离 1:时长 2:卡路里 3:步数)
+ int apc; //平均配速
+ int fpc; //最快配速
+ int spc; //最慢配速
+ int cdc; //步频
+ int std; //步幅
void Initialize()
{
ExerciseState GetSportState();
/*解析传输过来的数据*/
void AnalysisData(cywee_activity_result_t *cyweeInfo);
+ /*解析运动额外数据*/
+ void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo);
/*获取训练数据*/
SportData *GetSportdata();
/*设置训练数据[为训练记录准备]*/
TraingModel::GetInstance()->AnalysisData(cyweeInfo);
delete cyweeInfo; // 释放内存
}
+ if (request->msgId == TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE)
+ {
+ cywee_activity_result_extre_info_t *cyweeInfo = new cywee_activity_result_extre_info_t();
+ int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_extre_info_t), (cywee_activity_result_extre_info_t *)request->data, request->len);
+ if (rets != EOK)
+ {
+ delete cyweeInfo; // 处理内存分配失败的情况
+ cyweeInfo = NULL;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_extre_info_t fail ret = %d", rets);
+ return;
+ }
+ TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo);
+ delete cyweeInfo; // 释放内存
+ }
if (request->msgId == TOPIC_EVENT_BLE_TRAINING)
{
training_ble *traingbleInfo = new training_ble();
ExerciseClass type = GetSportId();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " AnalysisData %d", type);
// 通用数据
+
+ sportdata->steps = cyweeInfo->steps;
+ sportdata->distance = cyweeInfo->distance;
sportdata->calories = cyweeInfo->calories;
+ sportdata->cdc = cyweeInfo->step_frequency;
+ sportdata->std = cyweeInfo->step_length;
+ sportdata->pc = cyweeInfo->pace;
+ sportdata->distance = cyweeInfo->distance;
+
+ if (sportdata->spc == 0 || sportdata->spc > sportdata->pc)
+ {
+ sportdata->spc = sportdata->pc;
+ }
+
sportdata->heart = cyweeInfo->hrs;
SetIntensity(sportdata->heart); // 设置训练强度
if (sportdata->heart > 50)
}
}
}
+
+ // int avg_step_freq;//平均步频
+ // int avg_step_len;//平均步长
+ // int avg_pace;//平均配速
+ // int max_step_freq;//最大步频
+ // int max_pace;//最大配速
+ // int activity_zone;//活动程度区间 0低度 1中度 2高度
+ // int ativity_zone_moderate_duration;//中度活动时间
+ // int ativity_zone_high_duration;//高度活动时间
+ // int MHR_zone;//心率区间
+ // int distance_motion;//体感距离
+
+ /*分析activity extra info数据*/
+ void TraingModel::AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo)
+ {
+ sportdata->apc = cyweeInfo->avg_pace;
+ sportdata->fpc = cyweeInfo->max_pace;
+ }
/*打印函数*/
void TraingModel::printf_data(SportData *data)
sportdata->avgheart = data->avgheart;
sportdata->steps = data->steps;
sportdata->intensity = data->intensity;
+ sportdata->apc = data->apc;
+ sportdata->fpc = data->fpc;
+ sportdata->spc = data->spc;
+ sportdata->std = data->std;
+ sportdata->cdc = data->cdc;
}
printf_data(data);
}
data.cir = 0;
data.alt = 0;
/*配速相关还未处理 暂时保存0*/
- data.apc = 0;
- data.fpc = 0;
- data.spc = 0;
- data.std = 0;
- data.cdc = 0;
+ data.apc = static_cast<uint32_t>(sportdata->apc);
+ data.fpc = static_cast<uint32_t>(sportdata->fpc);
+ data.spc = static_cast<uint32_t>(sportdata->spc);
+ data.std = static_cast<uint32_t>(sportdata->std);
+ data.cdc = static_cast<uint32_t>(sportdata->cdc);
// 保存数据到bin
if (write_Trainingdata_data(data) != 1)
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-07-04 17:33:35\r
+ * @LastEditTime: 2024-07-05 19:00:56\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
static uint8_t pwr_button_result = 0;\r
static uint8_t func_button_result = 1;\r
\r
-static uint8_t hx3695_chip_id = 0;\r
\r
static int CRC16_XMODEM(uint8_t *bytes,uint16_t length) {\r
int crc = 0x0000; // initial value\r
{\r
//获取 ppg_id\r
uint8_t ppg_id;\r
- uapi_ppg_get_id(&ppg_id);\r
- if(ppg_id == 0x65)\r
- hx3695_chip_id = ppg_id;\r
+ hx3695_get_id(&ppg_id);\r
+\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
0x01,\r
- &hx3695_chip_id,\r
- sizeof(hx3695_chip_id));\r
+ &ppg_id,\r
+ 1);\r
\r
} else if(testitem == 0x02)\r
{\r
cat1_at_cmd("at*mrd_cdf=Q,LteCalData.nvm");\r
LOS_Msleep(500);\r
ble_get_cat1_at_msg((char *)&send_data,1);\r
- if(atol(send_data) == 1)\r
+ if(send_data == '1')\r
send_data = 1;\r
else\r
send_data = 0;\r
{\r
//查询信号值\r
char buf[20] = {0};\r
+ uint8_t send_data[2] = {0};\r
cat1_at_cmd("AT+QRXFTM=\"LTE BAND1\",300,\"on\",75");\r
LOS_Msleep(500);\r
ble_get_cat1_at_msg(buf,20);\r
- PRINT("AT+QRXFTM buf : %s \r\n",buf);\r
+ sscanf(buf, "+QRXFTM: -%d,-%d", (int *)&send_data[0], (int *)&send_data[1]);\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
0x12,\r
- (uint8_t *)buf,\r
- strlen(buf));\r
+ send_data,\r
+ 2);\r
} else if(testitem == 0x13)\r
{\r
//关闭强接受\r
void cywee_get_chipinfo(char *databuf,uint8_t len);
void cywee_set_sedentary_interval(int time);
+void cywee_set_sedentary_switch(int cmd);
void cywee_get_acc_switch(int cmd);
void cywee_stop(void);
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-26 20:29:58
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-06-28 18:00:01
+ * @LastEditTime: 2024-07-05 18:11:57
* @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
* @Description:
*
#define CYWEE_SERVICE_CMD_STOP_ACC 0x31
+#define CYWEE_SERVICE_CMD_OPEN_SEDENTARY 0x33
+
+#define CYWEE_SERVICE_CMD_CLOSE_SEDENTARY 0x34
+
errcode_t uapi_cywee_service_init(void);
void uapi_cywee_service_deinit(void);
case CYWEE_SERVICE_CMD_STOP_ACC:
cywee_stop();
+ break;
+
+ case CYWEE_SERVICE_CMD_OPEN_SEDENTARY:
+ cywee_set_sedentary_switch(1);
+ break;
+
+ case CYWEE_SERVICE_CMD_CLOSE_SEDENTARY:
+ cywee_set_sedentary_switch(0);
+ break;
+
default:
PRINT("unkonw cmd \r\n");
break;
get_acc_swtich = cmd;
}
+void cywee_set_sedentary_switch(int cmd)
+{
+ //设置久坐 0关,1开
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[2] = cmd;
+ CWM_SettingControl(SCL_SEDENTARY, &scl);
+}
+
void cywee_set_sedentary_interval(int time)
{
sedentary_interval = time;
//设置久坐
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
- scl.iData[2] = 1;
+ scl.iData[2] = 0;
CWM_SettingControl(SCL_SEDENTARY, &scl);
//设置静态模式
cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
- cywee_inactivity_mode_change(INACTIVITY_MODE_NAP);
+ cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
//cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
return false;\r
}\r
\r
+void hx3695_get_id(uint8_t *ppg_id)\r
+{\r
+ uint8_t i = 0;\r
+ uint8_t chip_id = 0;\r
+ for(i=0; i<5; i++)\r
+ {\r
+ hx3695_ppg_on();\r
+ hx3695_delay_ms(5);\r
+ chip_id = hx3695_read_reg(0x00);\r
+\r
+ if (chip_id == 0x65)\r
+ {\r
+ *ppg_id = chip_id;\r
+ break;\r
+ }\r
+ }\r
+ hx3695_ppg_off();\r
+}\r
+\r
uint8_t hx3695_read_fifo_size(void)\r
{\r
uint8_t data_len_h,data_len_l;\r
uint8_t hx3695_read_reg(uint8_t addr); \r
bool hx3695_brust_read_reg(uint8_t addr , uint8_t *buf, uint16_t length);\r
bool hx3695_chip_check(void);\r
+void hx3695_get_id(uint8_t *ppg_id);\r
uint8_t hx3695_read_fifo_size(void);\r
uint16_t hx3695_read_fifo_data(int32_t *s_buf, uint8_t size, uint8_t phase_num);\r
void hx3695_ppg_off(void);\r
get_current_time(&tv, &tm);
}
-
-#include "tyhx_hrs_custom.h"
-
void uapi_ppg_get_id(uint8_t *chip_id)
{
- custom_i2c_read_regs(HX3695_I2C_DEV_8ADDR,0x00,1,chip_id,1,I2C_BUS_2);
+ hx3695_get_id(chip_id);
}
-
#include "hal_i2c.h"
#include "i2c.h"
#define CUSTOM_I2C_TIME_MAX 3
{
UNUSED(strCommonCmd);
- uint8_t chip_id;
+ uint8_t chip_id = 0;
uapi_ppg_get_id(&chip_id);
-
+ PRINT("ppg_id[%x]\n",chip_id);
return ERRCODE_SUCC;
}