//LCD显示颜色\r
uint8_t send_data = 0x00;\r
char *color_buf[5] ={"0Xffff0000","0xff00ff00","0xff0000ff","0xffffffff","0xff000000"};\r
- mcu_pm_lcd_on(0,0);\r
+ ScreenAlwaysOnCtr(1);\r
switch (*data)\r
{\r
case 1:\r
void cywee_oncharging_update(int oncharging_status);
void cywee_wearstatus_update(int wearstatus);
void cywee_hrs_wearstatus_update(int hrs_data,int wearstatus);
-void cywee_set_user_info(int age,int gender,int weight,int height,int wearing_method);
+void cywee_set_user_info(int user_info[5]);
void cywee_get_sleep_data(void);
+void cywee_reset_daily_data(void);
+void cyw_inactivity_mode_change(int mode);
+void cyw_activity_mode_change(int mode);
+void cywee_hand_updown_switch(int cmd);
+void cywee_ar_alert_switch(int cmd);
extern uint8_t hrs_mode_state;
int cywee_main_dml(void);
void cywee_int_handler(void);
-void cywee_set_user_info(int age,int gender,int weight,int height,int wearing_method);
-void cywee_reset_daily_data(void);
-void cywee_get_sleep_data(void);
-
-void cyw_inactivity_mode_change(int mode);
-void cyw_activity_mode_change(int mode);
-
-void hand_updown_switch(int cmd);
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-26 20:29:58
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-22 21:02:15
+ * @LastEditTime: 2024-05-10 12:22:41
* @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
* @Description:
*
#define CYWEE_SERVICE_CMD_OPEN_HAND_UPDOWN 0x25
#define CYWEE_SERVICE_CMD_CLOSE_HAND_UPDOWN 0x26
+#define CYWEE_SERVICE_CMD_OPEN_AR_ALERT 0x27
+#define CYWEE_SERVICE_CMD_CLOSE_AR_ALERT 0x28
+
+#define CYWEE_SERVICE_CMD_TIME_SYNC 0x29
+
+#define CYWEE_SERVICE_CMD_GET_SLEEP_DATA 0x2A
+
+#define CYWEE_SERVICE_CMD_RESET_DAILY_DATA 0x2B
+
+
errcode_t uapi_cywee_service_init(void);
void uapi_cywee_service_deinit(void);
}
else if (mail.cmd == CYWEE_SERVICE_CMD_OPEN_HAND_UPDOWN)
{
- hand_updown_switch(1);
+ cywee_hand_updown_switch(1);
}
else if (mail.cmd == CYWEE_SERVICE_CMD_CLOSE_HAND_UPDOWN)
{
- hand_updown_switch(0);
+ cywee_hand_updown_switch(0);
}
+ else if (mail.cmd == CYWEE_SERVICE_CMD_OPEN_AR_ALERT)
+ {
+ cywee_ar_alert_switch(1);
+ }
+ else if (mail.cmd == CYWEE_SERVICE_CMD_CLOSE_AR_ALERT)
+ {
+ cywee_ar_alert_switch(0);
+ }
+ else if (mail.cmd == CYWEE_SERVICE_CMD_TIME_SYNC)
+ {
+ cywee_time_sync();
+ }
+ else if (mail.cmd == CYWEE_SERVICE_CMD_GET_SLEEP_DATA)
+ {
+ cywee_get_sleep_data();
+ }
+ else if (mail.cmd == CYWEE_SERVICE_CMD_RESET_DAILY_DATA)
+ {
+ cywee_reset_daily_data();
+ }
+
}
}
#define CYWEE_APP_BOARD_MSG_COUNT 50
uint8_t hrs_mode_state = 0;
-void hand_updown_switch(int cmd)
+void cywee_ar_alert_switch(int cmd)
+{
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = cmd;
+ CWM_SettingControl(SCL_AR_ALERT_CONFIG, &scl);
+}
+
+
+void cywee_hand_updown_switch(int cmd)
{
if(cmd == 1)
CWM_Sensor_Enable(IDX_ALGO_WATCH_HANDUP);
CWM_SettingControl(SCL_RESET_DAILY_INFO, &scl);
}
-
+//INT[1] : 0 立即输出,但不中止睡眠。 1 立即输出且中止睡眠
void cywee_get_sleep_data(void)
{
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
- scl.iData[1] = 0; //0 立即输出,但不中止睡眠。 1 立即输出且中止睡眠
+ scl.iData[1] = 0;
CWM_SettingControl(SCL_REQ_SLEEPING_DATA, &scl);
}
-void cywee_set_user_info(int age,int gender,int weight,int height,int wearing_method)
+void cywee_set_user_info(int user_info[5])
{
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
- scl.iData[1] = age;
- scl.iData[2] = gender;
- scl.iData[3] = weight;
- scl.iData[4] = height;
- scl.iData[5] = wearing_method;
+ scl.iData[1] = user_info[0];
+ scl.iData[2] = user_info[1];
+ scl.iData[3] = user_info[2];
+ scl.iData[4] = user_info[3];
+ scl.iData[5] = user_info[4];
CWM_SettingControl(SCL_USER_INFO, &scl);
}
+/*
+ int year ;// int[1] = year (1900 - 2100)
+ int month;// int[2] = month (1 - 12)
+ int day;// int[3] = day (1 - 31)
+ int hour;// int[4] = hour (0 - 23)
+ int minute;// int[5] = minute (0 - 59)
+ int second;// int[6] = second (0 - 59)
+*/
void cywee_time_sync(void)
{
time_t rawtime;
cywee_time_sync();
switch (mode)
{
- //無作用
+ //无作用
case INACTIVITY_MODE_NOTHING:
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
//睡眠
case INACTIVITY_MODE_SLEEPING:
+ CWM_OS_dbgPrintf("INACTIVITY_MODE_SLEEPING\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 2;
//久坐、有效站立和小睡
case INACTIVITY_MODE_SEDENTARY_AND_NAP:
+ CWM_OS_dbgPrintf("INACTIVITY_MODE_SEDENTARY_AND_NAP\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 3;
//小睡
case INACTIVITY_MODE_NAP:
+ CWM_OS_dbgPrintf("INACTIVITY_MODE_NAP\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 4;
//跑步机
case SPORT_ACTIVE_MODE_TREADMILL:
- PRINT("SPORT_ACTIVE_MODE_TREADMILL\r\n");
+ PRINT("SPORT_ACTIVE_MODE_TREADMILL\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = SPORT_ACTIVE_MODE_TREADMILL;
//户外跑步
case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
- PRINT("SPORT_ACTIVE_MODE_OUTDOOR_RUNNING\r\n");
+ PRINT("SPORT_ACTIVE_MODE_OUTDOOR_RUNNING\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = SPORT_ACTIVE_MODE_OUTDOOR_RUNNING;
//室内跑步
case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
- PRINT("SPORT_ACTIVE_MODE_INDOOR_RUNNING\r\n");
+ PRINT("SPORT_ACTIVE_MODE_INDOOR_RUNNING\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = SPORT_ACTIVE_MODE_INDOOR_RUNNING;
//自由运动
case SPORT_ACTIVE_MODE_FREE_TRAINING:
- PRINT("SPORT_ACTIVE_MODE_FREE_TRAINING\r\n");
+ PRINT("SPORT_ACTIVE_MODE_FREE_TRAINING\r\n");
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = SPORT_ACTIVE_MODE_FREE_TRAINING;
{
CWM_OS_dbgPrintf("CUSTOM_OFFBODY_DETECT !!! \r\n");
if((int)sensorEVT->fData[2] == 1)
+ {
+ memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
+ csd.sensorType = CUSTOM_OFFBODY_DETECT;
+ csd.fData[0] = 1;
+ CWM_CustomSensorInput(&csd);
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_TEST);
+ }
else
+ {
+ memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
+ csd.sensorType = CUSTOM_OFFBODY_DETECT;
+ csd.fData[0] = 0;
+ CWM_CustomSensorInput(&csd);
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_WEAR_MODE_TEST);
+ }
+
}
if((int)sensorEVT->fData[1] == CUSTOM_ON_CHARGING)
{
csd.sensorType = CUSTOM_ON_CHARGING;
csd.fData[0] = 0;
CWM_CustomSensorInput(&csd);
- }
+ }
+ else
+ {
+ memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
+ csd.sensorType = CUSTOM_ON_CHARGING;
+ csd.fData[0] = 1;
+ CWM_CustomSensorInput(&csd);
+ }
}
if((int)sensorEVT->fData[1] == CUSTOM_HEARTRATE)
{
scl.iData[0] = 1;
CWM_SettingControl(SCL_INACTIVITY_CONFIG, &scl);
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = 1;
+ CWM_SettingControl(SCL_AR_ALERT_CONFIG, &scl);
// memset(&scl, 0, sizeof(scl));
// scl.iData[0] = 1;
cyw_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
+ //cyw_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
+
return 0;
}
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-30 09:36:27
+ * @LastEditTime: 2024-05-10 12:19:56
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
// ppg_service_running_stat = true;
uapi_pm_control(PM_APP_WAKE_NEEDED);
tyhx_poweron();
- custom_i2c_reset();
+ //custom_i2c_reset();
hx3695_init(md);
} else {
#include <dirent.h>
#include <unistd.h>
#include "custom_runtime.h"
-
+#include "pm_definition.h"
#define SUPPORT_NV
errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex)
{
+
+ uapi_pm_add_sleep_veto(PM_ID_GSENSOR);
+
errcode_t ret;
uint32_t retry;
i2c_data_t data;
uint8_t *write_data = NULL;
- // custom_iic_init();
+ // custom_i2c_init();
write_data = (uint8_t *)osal_kmalloc(regLength, OSAL_GFP_KERNEL);
if (write_data == NULL) {
}
osal_kfree(write_data);
error:
+
+ uapi_pm_remove_sleep_veto(PM_ID_GSENSOR);
+
return (ret>0) ? ret*-1: ret;
}
errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
{
+ uapi_pm_add_sleep_veto(PM_ID_GSENSOR);
errcode_t ret;
uint32_t retry;
i2c_data_t data;
uint8_t *data_buf=writeData;
uint16_t data_len=writeDataSize;
- //custom_iic_init();
+ //custom_i2c_init();
send_len = data_len + regLength;
write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
if (write_data == NULL) {
free_mem:
osal_kfree(write_data);
error:
+ uapi_pm_remove_sleep_veto(PM_ID_GSENSOR);
return (ret>0) ? ret*-1: ret;
}
+
errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
{
errcode_t ret;
}
-void uapi_get_sleeping_data(void)
+
+//cywee获取睡眠数据
+void uapi_cywee_get_sleep_data(void)
+{
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA,NULL);
+}
+
+/*
+cywee设置用户信息
+0:gender;
+1:weight;
+2:height;
+3:Wearing_method;
+4:Wearing method (配戴方式) (default: 左手) (0: 左手 1: 右手)
+*/
+void uapi_cywee_set_user_info(int user_info[5])
+{
+ cywee_set_user_info(user_info);
+}
+
+//cywee清空每日数据
+void uapi_cywee_reset_daily_data(void)
+{
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESET_DAILY_DATA,NULL);
+}
+
+//cywee时间更新
+void uapi_cywee_time_sync(void)
{
- cywee_get_sleep_data();
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
}
-void cywee_get_id(void)
+void uapi_cywee_get_id(void)
{
uint8_t id = 0;
custom_i2c_read_regs(0x19,0x0FU,1,&id,1,I2C_BUS_2);
uint32_t custom_i2c_suspend(void);
uint32_t custom_i2c_resume(void);
-void uapi_get_sleeping_data(void);
-void cywee_get_id(void);
+void uapi_cywee_get_id(void);
int custom_exit_lpm(void);
-void uapi_exit_power_saving_mode(void);
-void uapi_enter_power_saving_mode(void);
-
-
+void uapi_cywee_get_sleep_data(void);
+void uapi_cywee_set_user_info(int user_info[5]);
+void uapi_cywee_time_sync(void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
}
-
static uint32_t custom_get_cywee_id(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
UNUSED(strCommonCmd);
- cywee_get_id();
+ uapi_cywee_get_id();
return ERRCODE_SUCC;
}
-static uint32_t custom_alipay_exit_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+static uint32_t custom_alipay_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
UNUSED(strCommonCmd);
return ERRCODE_SUCC;
}
+static uint32_t custom_cywee_time_sync(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+
+ UNUSED(strCommonCmd);
+
+ uapi_cywee_time_sync();
+ return ERRCODE_SUCC;
+}
+
+static uint32_t custom_cywee_get_sleep_data(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+
+ UNUSED(strCommonCmd);
+
+ uapi_cywee_get_sleep_data();
+
+ return ERRCODE_SUCC;
+}
static const at_cmd_table_t g_custom_utils_cmd[] = {
{ (char *)"AT^CUSTOM_SN", custom_utils_setsn, (char *)"123456789ABCDEF2345678" },
{ (char *)"AT^CUSTOM_SN_REQ", custom_utils_getsn, (char *)" " },
{ (char *)"AT^GETCYWEEID", custom_get_cywee_id, (char *)" " },
- { (char *)"AT^EXITLPM", custom_alipay_exit_test, (char *)" " },
+ { (char *)"AT^ALIPAYTEST", custom_alipay_test, (char *)" " },
+
+ { (char *)"AT^CYWEETIMESYNC", custom_cywee_time_sync, (char *)" " },
+
+ { (char *)"AT^CYWEEGETSLEEPDATA", custom_cywee_get_sleep_data, (char *)" " },
};
void pm_sikey_suspend(void) {
//心率,马达,加速计外设的I2C通道寄存器保存,关中断
+ custom_i2c_suspend();
//ADD alipay I2C3 suspend,
alipay_suspend();
}
void pm_sikey_resume(void){
//心率,马达,加速计外设的I2C通道寄存器的恢复,关中断,重新配置pinmux,重新初始化。
-
+ custom_i2c_resume();
alipay_resume();
}
void pm_core_suspend(void)