"locale": "cpp",
"optional": "cpp",
"system_error": "cpp",
- "vector": "cpp"
+ "vector": "cpp",
+ "ppg_service.h": "c",
+ "custom_utilscpp.h": "c",
+ "cywee_hal.h": "c",
+ "hx3695_hrs_agc.h": "c",
+ "hx3695_hal.h": "c",
+ "ppg_hal.h": "c",
+ "stdint.h": "c",
+ "__locale": "c",
+ "string": "c",
+ "string_view": "c",
+ "upg_definitions.h": "c",
+ "bleevent.h": "c",
+ "mag_hal.h": "c",
+ "cywee_service.h": "c",
+ "stdbool.h": "c",
+ "custom_runtime.h": "c",
+ "hx3695.h": "c"
}
}
\ No newline at end of file
if (need_enter_safemode() == true)\r
{\r
PRINT("entering SafeMode\r\n");\r
- #ifdef CUSTOM_UTILS\r
- uapi_dev_runtime_set_safemode_flag(1);\r
- #endif\r
+ // #ifdef CUSTOM_UTILS\r
+ // uapi_dev_runtime_set_safemode_flag(1);\r
+ // #endif\r
}else{\r
PRINT("entering NormalMode\r\n");\r
}\r
#include "cywee_at_cmd.h"\r
#endif\r
\r
-#ifdef SUPPORT_AT_MMC5603\r
-#include "mmc5603_at_cmd.h"\r
+#ifdef SUPPORT_AT_MAG\r
+#include "mag_at_cmd.h"\r
#endif\r
\r
#ifdef SUPPORT_AT_CUSTOMUTILS\r
at_cmd_add_moudle(cywee_table, cywee_cmd_count);\r
#endif\r
\r
-#ifdef SUPPORT_AT_MMC5603\r
- uint32_t mmc5603_cmd_count;\r
- at_cmd_table_t *mmc5603_table = get_mmc5603_cmd_table(&mmc5603_cmd_count);\r
- at_cmd_add_moudle(mmc5603_table, mmc5603_cmd_count);\r
+#ifdef SUPPORT_AT_MAG\r
+ uint32_t mag_cmd_count;\r
+ at_cmd_table_t *mag_table = get_mag_cmd_table(&mag_cmd_count);\r
+ at_cmd_add_moudle(mag_table, mag_cmd_count);\r
#endif\r
\r
#ifdef SUPPORT_AT_RTCTEST\r
#ifdef SUPPORT_BATTERY_SERVICE\r
#include "battery_service.h"\r
#endif\r
-#ifdef MAG_MMC5603\r
+#ifdef SUPORT_MAG_SERVICE\r
#include "mag_service.h"\r
#endif\r
#ifdef ACC_LIS2DOC\r
#include "acc_service.h"\r
#endif\r
\r
-#ifdef ENABLE_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
#include "cywee_service.h"\r
#endif\r
\r
* ConfigModel 初始化\r
* \r
*/\r
-#ifdef CUSTOM_UTILS\r
- ConfigModelInit();\r
- uapi_runtime_log_service_init();\r
- init_btaddr_btname();\r
- uapi_calendar_init();\r
- uapi_calendar_recover_date();\r
-#endif\r
+// #ifdef CUSTOM_UTILS\r
+// ConfigModelInit();\r
+// uapi_runtime_log_service_init();\r
+// init_btaddr_btname();\r
+// uapi_calendar_init();\r
+// uapi_calendar_recover_date();\r
+// #endif\r
#if DSP_EXIST == YES\r
audio_init();\r
#endif\r
#endif\r
\r
\r
-#ifdef CUSTOM_UTILS\r
- uapi_custom_cmd_service_init();\r
- uapi_custom_fileoperate_service_init();\r
-#endif\r
+// #ifdef CUSTOM_UTILS\r
+// uapi_custom_cmd_service_init();\r
+// uapi_custom_fileoperate_service_init();\r
+// #endif\r
\r
\r
#ifdef SUPPORT_CAT1_SERVICE\r
custom_i2c_init(I2C_BUS_0);\r
custom_i2c_init(I2C_BUS_2);\r
\r
-#ifdef MAG_MMC5603\r
+#ifdef SUPORT_MAG_SERVICE\r
uapi_mag_service_init();\r
#endif\r
\r
uapi_ppg_service_init();\r
#endif\r
\r
-#ifdef ENABLE_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
uapi_cywee_service_init();\r
#endif \r
\r
#endif\r
\r
/*启动蓝牙ble服务,cywee有重置 mac地址的操作,会需要把 蓝牙服务开启放在cywee服务之后*/\r
-#ifdef CUSTOM_UTILS\r
- start_custom_ble_service();\r
-#endif\r
+// #ifdef CUSTOM_UTILS\r
+// start_custom_ble_service();\r
+// #endif\r
// #ifdef SUPPORT_ALIPAY_SEC\r
// #if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT)\r
// uapi_alipay_svr_init();\r
//开始播放开机动画,并启动ohos系统\r
ohos_startup();\r
#endif\r
-#ifdef CUSTOM_UTILS\r
- startup_post_init();\r
-#endif\r
+// #ifdef CUSTOM_UTILS\r
+// startup_post_init();\r
+// #endif\r
set_startup_finish_flag();\r
}\r
\r
#include "custom_utils.h"
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
#include "power_display_service.h"
#include "custom_utils.h"
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:27:16
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 16:24:33
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/compass/src/CompassModel.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/*
* Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
* Description: CompassModel.cpp
#include "CompassModel.h"
#include <ctime>
+#ifdef SUPORT_MAG_SERVICE
+#include "mag_hal.h"
+#include "mag_service.h"
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
uint8_t CompassModel::GetCalibrationStatus(void)
{
+#ifdef SUPORT_MAG_SERVICE
+ if(mag_get_iAccuracy() < 3)
+ return 1;
+ else
+ return 0;
+#endif
return 0;
}
void CompassModel::SetDisplayAngle(uint16_t angle)
{
- displayAngle += angle;
- if (displayAngle > 359) {
- displayAngle = 0;
- }
+#ifdef SUPORT_MAG_SERVICE
+ displayAngle = (int16_t)mag_get_fAzimuth();
+#endif
}
uint16_t CompassModel::GetDisplayAngle(void)
bool CompassModel::OpenCompassSensor(void)
{
+#ifdef SUPORT_MAG_SERVICE
+ mag_start();
+#endif
return true;
}
bool CompassModel::CloseCompassSensor(void)
{
+#ifdef SUPORT_MAG_SERVICE
+ mag_stop();
+#endif
return true;
}
}
#include "power_display_service.h"
#include "custom_utils.h"
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
#include "power_display_service.h"
#include "custom_utils.h"
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
#include <sys/stat.h>\r
#include <unistd.h>\r
\r
-// #include "battery_hal.h"\r
+#include "battery_hal.h"\r
\r
#include "languagecode/LanguageInit.h"\r
#include "ui_service.h"\r
#include "power_display_service.h"
#include "custom_utils.h"
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
{
if (num == 0 || data == nullptr)
{
- GRAPHIC_LOGE("Invalid data or num.");
+ // GRAPHIC_LOGE("Invalid data or num.");
return;
}
#include <custom_utils.h>
#include "ConfigModel.h"
#include <UiConfig.h>
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
#include "custom_runtime.h"
{
case UICheckBox::SELECTED:
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MotionRecognition is enable!");
- #ifdef ENABLE_CYWEE
+ #ifdef SUPPORT_CYWEE_SERVICE
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OPEN_AR_ALERT,NULL);
#endif
ConfigModel::GetInstance()->SetMotionRecognition(true);
break;
case UICheckBox::UNSELECTED:
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MotionRecognition is disable!");
- #ifdef ENABLE_CYWEE
+ #ifdef SUPPORT_CYWEE_SERVICE
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CLOSE_AR_ALERT,NULL);
#endif
ConfigModel::GetInstance()->SetMotionRecognition(false);
Presenter<SaveBatView>::OnStart();\r
// 1.获取原drag\r
#ifdef CUSTOM_UTILS\r
- drag_x = get_drag_limit(0);\r
- drag_y = get_drag_limit(1);\r
+ // drag_x = get_drag_limit(0);\r
+ // drag_y = get_drag_limit(1);\r
\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drag_x:%d,drag_y:%d", drag_x, drag_y);\r
- // 2.设置drag\r
- enable_drag(0, 0);\r
- enable_drag(1, 0);\r
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drag_x:%d,drag_y:%d", drag_x, drag_y);\r
+ // // 2.设置drag\r
+ // enable_drag(0, 0);\r
+ // enable_drag(1, 0);\r
#endif\r
}\r
\r
* @Author: penglei 1624952103@qq.com
* @Date: SLEPPNOTIFY24-06-26 19:36:48
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-11-27 11:15:14
+ * @LastEditTime: 2025-05-16 18:23:47
* @FilePath:
* /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
* @Description:
#include <cmsis_os2.h>
#include <service/graphic_service.h>
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_service.h"
+#endif
+
extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time,
char date_separator, char time_separator,
date_format_t format);
void SleepModel::msg_save_sleep_data() {
// 配置睡眠数据
int cmd = 0;
- // do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA,&cmd); // 获取睡眠数据 但不中止睡眠
+#ifdef SUPPORT_CYWEE_SERVICE
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA,&cmd); // 获取睡眠数据 但不中止睡眠
+#endif
}
void SleepModel::UpdateSleepView()
TOPIC_EVENT_HFP_PHONE_TO_WATCH,\r
TOPIC_EVENT_HFP_WATCH_TO_PHONE,\r
TOPIC_EVENT_HFP_HINT,\r
-#ifdef CYWEE_SPORT\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
TOPIC_EVENT_ACTIVITY_UPDATE,\r
TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,\r
TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,\r
{TOPIC_EVENT_SHUTDOWN, A_CORE_MASK, 1},
{TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1},
{TOPIC_EVENT_STATIC_HEARTRATE_UPDATA, A_CORE_MASK, 1},
-#ifdef CYWEE_SPORT
+#ifdef SUPPORT_CYWEE_SERVICE
{TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1},
{TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, A_CORE_MASK, 1},
{TOPIC_EVENT_AR_ALERT_TYPE_UPDATE, A_CORE_MASK, 1},
'BOARD_FD230',
'FT_SINGLE_UART',
'CONFIG_EFUSE_READ_TO_RAM',
- # 'CUSTOM_UTILS',
+ #'CUSTOM_UTILS',
# 'CUSTOM_HID_SERVICE',
# 'WEARABLE_LOG_DEBUG',
'SUPPORT_RC_CALIBRATION',
- # 'PPG_HX3695',
+ 'PPG_HX3695',
'VIB_USE_PWM',
'CONFIG_PWM_SUPPORT',
# 'ACC_LIS2DOC',
- # 'ENABLE_CYWEE',
- # 'ENABLE_CUSTOM_I2C',
- # 'SUPPORT_AT_CYWEE',
- # 'MAG_MMC5603',
- # 'ENABLE_VIBRATOR',
+ 'ENABLE_CUSTOM_I2C',
+ #'ENABLE_VIBRATOR',
# 'ENABLE_SLIP',
'ENCODER_SUPPORT',
- # 'SUPPORT_SPO2_NOTIFICATION',
- # 'SUPPORT_SPO2_NOTIFICATION_TEST',
+ #'SUPPORT_SPO2_NOTIFICATION',
+ #'SUPPORT_SPO2_NOTIFICATION_TEST',
# 'SUPPORT_DEVICE_PAIRING_NOTIFICATION',
# 'ENABLE_FONT_VECTOR_GLOBAL',
# 'ENABLE_SHAPING',
'SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION',
- # 'SUPPORT_AT_CUSTOMUTILS',
+ #'SUPPORT_AT_CUSTOMUTILS',
# 'SUPPORT_BLE_SERVICE',
'FD230',
# 'SUPPORT_AUTO_OTA_SERVER',
# 'CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1',
#"MEM_CHECK",
#'ENABLE_WEBSOCKET',
- # 'CYWEE_SPORT',
- # 'CYWEE_MAC_ACTIVE',
- 'SUPPORT_CAT1_SERVICE',
- # 'SUPPORT_TCPIP',
+ 'SUPPORT_CYWEE_SERVICE',
+ 'CYWEE_MAC_ACTIVE',
+ #'SUPPORT_CAT1_SERVICE',
+ #'SUPPORT_TCPIP',
'SUPPORT_HID_SERVICE',
'SUPPORT_BAIDU_MAP',
'CFG_FLASH_SIZE=16',
'audio_at_service',
'media_at_service',
'bt_manager_at_service',
- # "ppg_sensor",
+ "ppg_sensor",
# "ppgBleService",
- # "mag_sensor",
+ "mag_sensor_mmc5603",
"vibrator",
"vibrator_service",
"-:lwip",
"custom_config",
"rotary_encoder",
"nativelauncher",
- # "ppg_service",
- # "cywee",
- # "batterry_service",
+ "ppg_service",
+ "cywee",
+ "batterry_service",
# "bleservice",
# "blemoder",
# "factorytest_service",
# "hid_service",
# "producttest",
+ "ppg_hal",
+ "mag_hal",
+ "mag_service",
],
'image_analysis': False,
'fs_image_path':'fd230',
'VIB_USE_PWM',
'CONFIG_PWM_SUPPORT',
# 'ACC_LIS2DOC',
- # 'ENABLE_CYWEE',
# 'ENABLE_CUSTOM_I2C',
- # 'SUPPORT_AT_CYWEE',
# 'MAG_MMC5603',
# 'ENABLE_VIBRATOR',
# 'ENABLE_SLIP',
# 'CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1',
#"MEM_CHECK",
# 'ENABLE_WEBSOCKET',
- # 'CYWEE_SPORT',
+ # 'SUPPORT_CYWEE_SERVICE',
# 'CYWEE_MAC_ACTIVE',
# 'SUPPORT_CAT1_SERVICE',
# 'SUPPORT_TCPIP',
'VIB_USE_PWM',
'CONFIG_PWM_SUPPORT',
# 'ACC_LIS2DOC',
- 'ENABLE_CYWEE',
'ENABLE_CUSTOM_I2C',
- 'SUPPORT_AT_CYWEE',
'MAG_MMC5603',
'ENABLE_VIBRATOR',
# 'ENABLE_SLIP',
'ENABLE_SHAPING',
'SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION',
'SUPPORT_AT_CUSTOMUTILS',
- 'CYWEE_SPORT',
+ 'SUPPORT_CYWEE_SERVICE',
'CYWEE_MAC_ACTIVE',
# 'SUPPORT_TCPIP',
'SUPPORT_HID_SERVICE',
'VIB_USE_PWM',
'CONFIG_PWM_SUPPORT',
# 'ACC_LIS2DOC',
- 'ENABLE_CYWEE',
'ENABLE_CUSTOM_I2C',
#'ENABLE_CUSTOM_SPI',
- 'SUPPORT_AT_CYWEE',
'MAG_MMC5603',
'ENABLE_VIBRATOR',
'ENABLE_SLIP',
'ENABLE_SHAPING',
'SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION',
'SUPPORT_AT_CUSTOMUTILS',
- 'CYWEE_SPORT',
+ 'SUPPORT_CYWEE_SERVICE',
'CYWEE_MAC_ACTIVE',
'SUPPORT_TCPIP',
'SUPPORT_HID_SERVICE',
'SUPPORT_RC_CALIBRATION',
'VIB_USE_PWM',
'CONFIG_PWM_SUPPORT',
- 'ENABLE_CYWEE',
'ENABLE_CUSTOM_I2C',
- 'SUPPORT_AT_CYWEE',
'MAG_MMC5603',
'ENABLE_VIBRATOR',
'ENABLE_SLIP',
'ENABLE_SHAPING',
'SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION',
'SUPPORT_AT_CUSTOMUTILS',
- 'CYWEE_SPORT',
+ 'SUPPORT_CYWEE_SERVICE',
'CYWEE_MAC_ACTIVE',
'SUPPORT_TCPIP',
'SUPPORT_HID_SERVICE',
//#include "service/a5133_service.h"
#endif
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
extern void cywee_int_callback(pin_t pin, uintptr_t param);
#endif
/**
//默认开启 EXT LDO V3.0 V1.8
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
/**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 采用timer 时这些中断要屏蔽*/
{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
//{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
//默认开启 EXT LDO V3.0 V1.8
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
/**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 采用timer 时这些中断要屏蔽*/
// { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
//{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
extern void ppg_int_callback(pin_t pin, uintptr_t param);
#endif
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
extern void cywee_int_callback(pin_t pin, uintptr_t param);
#endif
//默认开启 EXT LDO V3.0 V1.8
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
/**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 采用timer 时这些中断要屏蔽*/
{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
//{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
//默认开启 EXT LDO V3.0 V1.8
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
/**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 采用timer 时这些中断要屏蔽*/
// { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
//{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
#endif
#ifndef SUPPORT_RECOVERY_DISPLAY //判定是否是在编译RECOVERY image,本参数不支持RECOVERY
-#ifdef CUSTOM_UTILS
- if (uapi_custom_uart_rx_enable_flag() == false)
-#endif
+// #ifdef CUSTOM_UTILS
+// if (uapi_custom_uart_rx_enable_flag() == false)
+// #endif
{
if (buffer != NULL && ((uint8_t*)buffer)[0]=='A' && ((uint8_t*)buffer)[1]=='T')
{
return zone;
}
+void uapi_set_timezone(uint16_t timezone_quarters)
+{
+ uint16_t tz_zone = readw(TZ_ADDRESS) & 0xFF00;
+ tz_zone = tz_zone | timezone_quarters;
+ writew(TZ_ADDRESS, tz_zone);
+}
+
void save_time(void)
{
uint64_t time_sec = get_local_timestamp();
}
}
+static void pm_app_wake_power_control(pm_control_t type)
+{
+ if (type == PM_APP_WAKE_NEEDED) {
+ uapi_pm_add_sleep_veto(PM_ID_SCREEN);
+ } else if (type == PM_APP_WAKE_NONEED) {
+ uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
+ }
+}
+
static void pm_display_power_control(pm_control_t type)
{
if (type == PM_DISPLAY_POWER_UP_AND_RUN) {
pm_display_power_on();
} else if (type == PM_DISPLAY_POWER_OFF) {
pm_display_power_off();
+ }else if (type <= PM_APP_WAKE_NONEED) {
+ pm_app_wake_power_control(type);
}
}
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:27:18
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 11:24:24
+ * @FilePath: /FD230/code/sdk/middleware/chips/brandy/pm/pm_adapt/pm_control.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/*
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
* Description: pm control header
PM_DISPLAY_POWER_OFF = 5, // !< Power off off.
PM_SDIO_POWER_UP_AND_RUN = 6, // !< Power up and run sdio
PM_SDIO_POWER_OFF = 7, // !< Power off off.
+ PM_APP_WAKE_NEEDED = 8,
+ PM_APP_WAKE_NONEED = 9,
PM_CONTROL_MAX,
} pm_control_t;
#endif
void pm_sikey_suspend(void) {
-#ifdef CUSTOM_UTILS
- custom_i2c_suspend();
-#endif
+ // custom_i2c_suspend();
+
#ifdef ENABLE_CUSTOM_SPI
custom_spi_suspend();
#endif
}
void pm_sikey_resume(void){
-#ifdef CUSTOM_UTILS
- custom_i2c_resume();
-#endif
+
+ // custom_i2c_resume();
#ifdef ENABLE_CUSTOM_SPI
custom_spi_resume();
return true;
}
-// void uapi_cat1_remove_cat1_vote(void)
-// {
-// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
-// if (cnt == 1) {
-// uapi_pm_remove_sleep_veto(PM_ID_CAT1);
-// } else {
-// // 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_cat1_vote(void)
-// {
-// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
-// if (cnt == 0) {
-// uapi_pm_add_sleep_veto(PM_ID_CAT1);
-// } else {
-// // 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");
-// }
-
+
bool testBTView::testBTScrollViewcrollViewinit(uint8_t id)
{
ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
sizeof(common_notify_mail_t), 0);
if (ret != OSAL_SUCCESS) {
- MMC_ERROR("Error charge Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+ PRINT("Error charge Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
}
}
if (osal_msg_queue_create("charge_service_queue", APP_BOARD_MSG_COUNT, &g_app_queue,
0, sizeof(common_notify_mail_t)) != ERRCODE_SUCC) {
- MMC_ERROR("[charge][service] app create mail fail\n");
+ PRINT("[charge][service] app create mail fail\n");
}
}
)
set(PUBLIC_DEFINES
-
+SUPPORT_AT_CYWEE
)
# use this when you want to add ccflags like -include xxx
false
)
-if("SUPPORT_AT_CYWEE" IN_LIST DEFINES)
+if("SUPPORT_CYWEE_SERVICE" IN_LIST DEFINES)
find_library(LIB_PATH_CWM_LIB_DML Lib/CWM_LIB_DML_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
if("CYWEE_MAC_ACTIVE" IN_LIST DEFINES)
find_library(LIB_PATH_CWM_LIB Lib/CWM_LIB_clang_riscv_mac.a ${CMAKE_CURRENT_SOURCE_DIR})
void activity_mode_setstatus(int cmd);
void cywee_oncharging_update(int oncharging_status);
void cywee_wearstatus_update(int wearstatus);
-void cywee_hrs_update(int hrs_data);
+void cywee_hrs_update(void);
void cywee_set_user_info(void);
void cywee_get_sleep_data(int cmd);
void cywee_reset_daily_data(void);
// PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
// c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_TREADMILL:
// PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
// PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
// c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
// PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE\r\n");
// PRINT("outdoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
// c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
// PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
// PRINT("indoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
// c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
// PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
// PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
// c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_FREE_TRAINING:
// PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
// PRINT("free training activit_mode[%d], calories[%d],MHR_zone[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.MHR_zone);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
default:
break;
// c_activity_result_extre_info_t.ativity_zone_high_duration,
// c_activity_result_extre_info_t.MHR_zone,
// c_activity_result_extre_info_t.distance_motion);
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
}
else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE)
case INACTIVITY_MODE_SEDENTARY_OUTPUT:
// PRINT("sedentary status[%d], stand freq[%d], day[%d], hour[%d], min[%d]\n",
// c_inactivity_result_t.status,c_inactivity_result_t.stand_freq,c_inactivity_result_t.day,c_inactivity_result_t.hour,c_inactivity_result_t.minute);
- CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
break;
// 睡眠
PRINT("sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
c_inactivity_result_t.status,c_inactivity_result_t.month, c_inactivity_result_t.day,
c_inactivity_result_t.hour, c_inactivity_result_t.minute);
- CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
break;
// 小睡
PRINT("nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
c_inactivity_result_t.status, c_inactivity_result_t.month,
c_inactivity_result_t.day, c_inactivity_result_t.hour, c_inactivity_result_t.minute);
- CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
break;
}
c_inactivity_accumulate_time_t.total_time, c_inactivity_accumulate_time_t.total_mild_sleep_time,
c_inactivity_accumulate_time_t.total_deep_sleep_time, c_inactivity_accumulate_time_t.total_wake_time,
c_inactivity_accumulate_time_t.total_rem_sleep_time);
- CustomEventPublish(TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, &c_inactivity_accumulate_time_t, sizeof(cywee_inactivity_accumulate_time_t));
+ //CustomEventPublish(TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, &c_inactivity_accumulate_time_t, sizeof(cywee_inactivity_accumulate_time_t));
}
else
break;
case CYWEE_SERVICE_CMD_HRS_CHANGE:
- cywee_hrs_update(mail.data);
+ // cywee_hrs_update(mail.data);
break;
case CYWEE_SERVICE_CMD_SEDENTARY_MODE:
+++ /dev/null
-#ifndef __CWM_SAMPLE_PROJ_CONFIG_H__
-#define __CWM_SAMPLE_PROJ_CONFIG_H__
-
-//#define RUN_TEST_API_PROCESS
-
-//#define PRINTF_FROM_UART
-
-//#define CHECK_LOG_TOOL
-
-//#define SIGNAL_SIMULATE_PROCESS
-//#define INPUT_DATA_WITH_FIFO_MODE
-
-#endif //__CWM_SAMPLE_PROJ_CONFIG_H__
#endif
#include "custom_save_runtime.h"
+#ifdef SUPPORT_GNSS
+#include "gnss_ctl.h"
+#include "NMEA0183.h"
+#endif
+
+#ifdef SUPPORT_PPG_SERVICE
+#include "ppg_hal.h"
+#endif
+
#define AP_ENABLE_DML_SDO_LISTEN
#define GSENSON_MSG_COUNT 64
static uint8_t wake_up_flag = 0;
+static osTimerId_t g_sport_timer = NULL;
+static bool g_sport_stat = false;
+#define SPORT_CHECK_MS 1000
+
+void cywee_gnss_update(void)
+{
+#ifdef SUPPORT_GNSS
+ gps_data_t *gps_data = getGPSGlobaldata();
+ if(gps_data == NULL)
+ {
+ PRINT("gps_data == NULL \n");
+ return;
+ }
+
+ if(gps_data->status < 1)
+ return;
+
+ memset(&csd, 0, sizeof(CUSTOM_GNSS));
+ csd.sensorType = CUSTOM_GNSS;
+ csd.dData[0] = gps_data->location.lat;//latitude (degrees) (range: -90~90); //纬度
+ csd.dData[1] = gps_data->location.lng;//longitude (degrees) (range: -180~180) //经度
+ csd.dData[2] = gps_data->location.alt;//altitude (meters) //海拔
+ csd.dData[3] = gps_data->ground_course;//bearing (heading in degrees) //方位角
+ csd.dData[4] = gps_data->ground_speed;//speed (m/s) //速度
+ csd.dData[5] = gps_data->hdop;//Horizontal_Accuracy (meters) //水平精度
+ csd.dData[6] = gps_data->vdop;//Vertical_Accuracy (meters) //垂直精度
+ csd.dData[7] = 0; //水平精度衰减因子
+ csd.dData[8] = 0; //垂直精度衰减因子
+ CWM_CustomSensorInput(&csd);
+#endif
+}
+
+
+void cywee_hrs_update(void)
+{
+ uint8_t hrs_data = 0;
+#ifdef SUPPORT_PPG_SERVICE
+ // hrs = hrs_data;
+ // CWM_OS_dbgPrintf("hrs_data : %d\r\n",hrs_data);
+ hrs_data = ppg_get_hrs();
+#endif
+ memset(&csd, 0, sizeof(CUSTOM_HEARTRATE));
+ csd.sensorType = CUSTOM_HEARTRATE;
+ csd.fData[0] = hrs_data;
+ CWM_CustomSensorInput(&csd);
+}
+
+static void cywee_service_check_timer_callback(void)
+{
+ cywee_hrs_update();
+ cywee_gnss_update();
+}
+
+static void cywee_sport_timer_start_check(uint32_t rtc_ms)
+{
+ if (g_sport_timer == NULL)
+ return;
+
+ if (!g_sport_stat)
+ {
+ osTimerStart(g_sport_timer, rtc_ms);
+ g_sport_stat = true;
+ }
+
+}
+
+static void cywee_sport_timer_stop_check(void)
+{
+ if (g_sport_timer == NULL)
+ return;
+
+ if (g_sport_stat)
+ {
+ osTimerStop(g_sport_timer);
+ g_sport_stat = false;
+ }
+}
+
+
#ifdef CYWEE_MAC_ACTIVE
int cm__hs1__mac_c1_init(void);
int cm__hs1__deinit(void);
uapi_create_folder(dir_path);
}
-void cywee_hrs_update(int hrs_data)
-{
- // hrs = hrs_data;
- // CWM_OS_dbgPrintf("hrs_data : %d\r\n",hrs_data);
- memset(&csd, 0, sizeof(CUSTOM_HEARTRATE));
- csd.sensorType = CUSTOM_HEARTRATE;
- csd.fData[0] = hrs_data;
- CWM_CustomSensorInput(&csd);
-}
-
void cywee_oncharging_update(int oncharging_status)
{
// CWM_OS_dbgPrintf("oncharging : %d\r\n",oncharging_status);
void cywee_activity_mode_change(int mode)
{
+ if(mode != SPORT_ACTIVE_MODE_NORMAL)
+ cywee_sport_timer_start_check(SPORT_CHECK_MS);
+ else
+ cywee_sport_timer_stop_check();
+
switch (mode)
{
//一般模式(生活模式)
gxyz_t.y = sensorEVT->fData[1];
gxyz_t.z = sensorEVT->fData[2];
- // CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
- // sensorEVT->fData[0],
- // sensorEVT->fData[1],
- // sensorEVT->fData[2]
- // );
+ CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
+ sensorEVT->fData[0],
+ sensorEVT->fData[1],
+ sensorEVT->fData[2]
+ );
if(num_falg==GSENSON_MSG_COUNT)
{
hrs_mode_state = 0;
uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_SPORT_MEASURE_END);
}
+ }
+ if((int)sensorEVT->fData[1] == CUSTOM_GNSS)
+ {
+ CWM_OS_dbgPrintf("CUSTOM_GNSS !!! \r\n");
+#ifdef SUPPORT_GNSS
+ if((int)sensorEVT->fData[2] == 1)
+ {
+
+ gnss_start();
+ }
+ else
+ {
+ gnss_stop();
+ }
+#endif
}
break;
case IDX_ALGO_SHAKE:
{
sedentary_interval_count = 0;
// cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
- CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
}
}
else if(c_inactivity_result_t.status != 3)
{
sedentary_interval_count = 0;
// cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
- CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
}
}else if((int)sensorEVT->fData[0] == 21){
c_activity_result_extre_info_t.distance_motion = (int)sensorEVT->fData[14];
// cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(cywee_activity_result_extre_info_t));
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
}else if((int)sensorEVT->fData[0] == 5001)
{
// c_activity_result_t.hrs = hrs;
// hrs = 0; //每次上报完 清除心率值
// cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
}else if((int)sensorEVT->fData[0] == 102)
{
uapi_get_timestampe_ss(&tm);
// CWM_OS_dbgPrintf("ar alert type : %d tm :%d \n",(int)sensorEVT->fData[1],tm);
int ar_alert_type = (int)sensorEVT->fData[1];
- CustomEventPublish(TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,&ar_alert_type,sizeof(int));
+ //CustomEventPublish(TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,&ar_alert_type,sizeof(int));
}else{
stepcount = (int)sensorEVT->fData[1];
// c_activity_result_t.hrs = hrs;
// hrs = 0; //每次上报完 清除心率值
// cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int));
}
break;
cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
cywee_oncharging_update(get_charge_stat()); //初始化时检查充电状态
+
+ g_sport_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
//cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
//cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
// uapi_save_file_data("user/userdata/wear.bin",&data,sizeof(SLEEP_STAT_T),"ab");
wear_file_check(data,"user/userdata/wear.bin");
}
+
+uint8_t cywee_dml_get_steps(void)
+{return 0;}
-#===============================================================================
-# @brief cmake file
-# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
-#===============================================================================
-set(COMPONENT_NAME "mag_sensor")
-
-
-if("MAG_MMC5603" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/mmc_customer.c
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/mmc5603_main.c
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/MMC5603.c
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/mmc5603_at_cmd.c
- ${CMAKE_CURRENT_SOURCE_DIR}/service/mag_service.c
-)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603
- ${CMAKE_CURRENT_SOURCE_DIR}/service
-)
-set(PUBLIC_DEFINES
- MAG_MMC5603
- SUPPORT_AT_MMC5603
-)
-else()
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/mmc_customer.c
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/mmc5603_main.c
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/MMC5603.c
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/mmc5603_at_cmd.c
- ${CMAKE_CURRENT_SOURCE_DIR}/service/mag_service.c
-)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603
- ${CMAKE_CURRENT_SOURCE_DIR}/service
-)
-set(PUBLIC_DEFINES
- MAG_MMC5603
- SUPPORT_AT_MMC5603
-)
-endif()
-
-set(PRIVATE_HEADER
-)
-
-set(PRIVATE_DEFINES
-)
-
-# use this when you want to add ccflags like -include xxx
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
- -Wno-incompatible-function-pointer-types
- -Wno-unused-function
-)
-
-set(WHOLE_LINK
- true
-)
-
-set(MAIN_COMPONENT
- false
-)
-
-build_component()
-
-install_sdk(${CMAKE_CURRENT_SOURCE_DIR} "*")
-
-find_library(LIB_PATH_MMC5603 mmc5603/MemsicAlgoNolog.a ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_MMC5603} PRIVATE -Wl,--whole-archive)
\ No newline at end of file
+add_subdirectory_if_exist(service)
+add_subdirectory_if_exist(hal)
+add_subdirectory_if_exist(mmc5603)
\ No newline at end of file
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "mag_hal")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/mag_hal.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
--- /dev/null
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifdef MAG_MMC5603
+#include "mmc5603_hal.h"
+#include "MMC5603.h"
+#endif
+
+
+void mag_sensor_check(void)
+{
+#ifdef MAG_MMC5603
+ mmc5603_check();
+#endif
+}
+
+void mag_sensonr_start(void)
+{
+#ifdef MAG_MMC5603
+ mmc5603_start();
+#endif
+}
+
+void mag_sensonr_stop(void)
+{
+#ifdef MAG_MMC5603
+ mmc5603_stop();
+#endif
+}
+
+uint8_t mag_get_chip_id(void)
+{
+ uint8_t id = 0;
+#ifdef MAG_MMC5603
+ CUSTOM_MMC5603_GETID(&id);
+ printf("MMC5603 CHIP ID : 0x%x\n",id);
+#endif
+ return id;
+}
+
+int mag_get_iAccuracy(void)
+{
+ int iAccuracy = 0;
+#ifdef MAG_MMC5603
+ iAccuracy = mag_service_get_iAccuracy();
+#endif
+ return iAccuracy;
+}
+
+
+float mag_get_fAzimuth(void)
+{
+ float fAzimuth = 0;
+#ifdef MAG_MMC5603
+ fAzimuth = (float)mag_service_get_fAzimuth();
+#endif
+ return fAzimuth;
+}
\ No newline at end of file
--- /dev/null
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-06-07 11:18:26
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 14:25:27
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.h
+ * @Description:
+ *
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
+ */
+#ifndef MAG_HAL_H__
+#define MAG_HAL_H__
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#ifdef MAG_MMC5603
+#define MAG_SENSOR_CHIP_ID 0X10
+#else
+#define MAG_SENSOR_CHIP_ID 0
+#endif
+
+
+void mag_sensonr_start(void);
+void mag_sensonr_stop(void);
+
+uint8_t mag_get_chip_id(void);
+int mag_get_iAccuracy(void);
+float mag_get_fAzimuth(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif
\ No newline at end of file
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "mag_sensor_mmc5603")
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/mmc_customer.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603_main.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/MMC5603.c
+)
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}
+)
+set(PUBLIC_DEFINES
+ MAG_MMC5603
+)
+
+set(PRIVATE_HEADER
+)
+
+set(PRIVATE_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-incompatible-function-pointer-types
+ -Wno-unused-function
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+install_sdk(${CMAKE_CURRENT_SOURCE_DIR} "*")
+
+find_library(LIB_PATH_MMC5603 MemsicAlgoNolog.a ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_MMC5603} PRIVATE -Wl,--whole-archive)
+
+build_component()
\ No newline at end of file
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:28:07
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 16:52:10
+ * @FilePath: /FD230/code/sdk/zhihui/drivers/mag/mmc5603/mmc5603_hal.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/**
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
*
void mmc5603_poweron(void);
void mmc5603_poweroff(void);
+float mag_service_get_fAzimuth(void);
+int mag_service_get_iAccuracy(void);
+
#ifdef __cplusplus
#if __cplusplus
}
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "mag_service")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/mag_at_cmd.c
+${CMAKE_CURRENT_SOURCE_DIR}/mag_service.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+-Wno-incompatible-function-pointer-types
+-Wno-unused-function
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+ SUPORT_MAG_SERVICE
+ SUPPORT_AT_MAG
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
* @Author: penglei 1624952103@qq.com
* @Date: 2024-12-16 09:56:44
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-12-16 20:50:13
- * @FilePath: /sdk615/code/sdk/drivers/peripheral/mag/mmc5603/mmc5603_at_cmd.c
+ * @LastEditTime: 2025-05-16 11:51:20
+ * @FilePath: /sdk615/code/sdk/drivers/peripheral/mag/mag/mag_at_cmd.c
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
-// #include "mmc5603.h"
+// #include "mag.h"
#include "at_cmd_api.h"
#include "pm_control.h"
-#include "MMC5603.h"
-#include "mmc_customer.h"
+#include "mag_hal.h"
#include "mag_service.h"
#define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
-#define MMC5603_MAX_ARGC 8
-#define MMC5603_MAX_ARGV_LEN 64
+#define MAG_MAX_ARGC 8
+#define MAG_MAX_ARGV_LEN 64
-#define MMC5603_SUCCESS 0
-#define MMC5603_FAILED (-1)
+#define MAG_SUCCESS 0
+#define MAG_FAILED (-1)
static int ConvertCmdToParam(uint8_t *para, uint32_t paraLen,
- uint8_t argv[MMC5603_MAX_ARGC][MMC5603_MAX_ARGV_LEN], uint32_t* argc)
+ uint8_t argv[MAG_MAX_ARGC][MAG_MAX_ARGV_LEN], uint32_t* argc)
{
uint32_t pos = 0;
*argc = 0;
argv[*argc][pos] = '\0';
*argc += 1;
pos = 0;
- if (*argc >= MMC5603_MAX_ARGC) {
- return MMC5603_FAILED;
+ if (*argc >= MAG_MAX_ARGC) {
+ return MAG_SUCCESS;
}
} else {
argv[*argc][pos] = para[i];
pos++;
- if (pos >= MMC5603_MAX_ARGV_LEN) {
- return MMC5603_FAILED;
+ if (pos >= MAG_MAX_ARGV_LEN) {
+ return MAG_SUCCESS;
}
}
}
*argc += 1;
}
- return MMC5603_SUCCESS;
+ return MAG_SUCCESS;
}
-static uint32_t mmc5603_start_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+static uint32_t mag_start_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
UNUSED(strCommonCmd);
UNUSED(paraLen);
do_mag_service_check_msg(MAG_SERVICE_CMD_START_CHECK);
return ERRCODE_SUCC;
}
-static uint32_t mmc5603_stop_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+static uint32_t mag_stop_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
UNUSED(strCommonCmd);
UNUSED(paraLen);
do_mag_service_check_msg(MAG_SERVICE_CMD_STOP_CHECK);
return ERRCODE_SUCC;
}
-static const at_cmd_table_t g_mmc5603_cmd[] = {
- { (char *)"AT^MMC5603TESTSTART", mmc5603_start_test, (char *)"1" },
- { (char *)"AT^MMC5603TESTSTOP", mmc5603_stop_test, (char *)"1" },
+static const at_cmd_table_t g_mag_cmd[] = {
+ { (char *)"AT^MAGTESTSTART", mag_start_test, (char *)"1" },
+ { (char *)"AT^MAGTESTSTOP", mag_stop_test, (char *)"1" },
};
-at_cmd_table_t *get_mmc5603_cmd_table(uint32_t *cmd_count)
+at_cmd_table_t *get_mag_cmd_table(uint32_t *cmd_count)
{
- *cmd_count = ARRAY_COUNT(g_mmc5603_cmd);
- return (at_cmd_table_t *)g_mmc5603_cmd;
+ *cmd_count = ARRAY_COUNT(g_mag_cmd);
+ return (at_cmd_table_t *)g_mag_cmd;
}
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:28:07
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 11:52:31
+ * @FilePath: /FD230/code/sdk/zhihui/drivers/mag/service/mag_at_cmd.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/**
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
*
* History: \n
* 2022-07-20, Create file. \n
*/
-#ifndef MMC5603_AT_PROCESS_H
-#define MMC5603_AT_PROCESS_H
+#ifndef MAG_AT_PROCESS_H
+#define MAG_AT_PROCESS_H
#include <stdint.h>
#include <stdio.h>
#endif /* __cplusplus */
#endif /* __cplusplus */
-at_cmd_table_t *get_mmc5603_cmd_table(uint32_t *cmd_count);
+at_cmd_table_t *get_mag_cmd_table(uint32_t *cmd_count);
#ifdef __cplusplus
#if __cplusplus
-/**
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
- *
- * Description: Test adc source \n
- * Author: @CompanyNameTag \n
- * History: \n
- * 2022-08-16, Create file. \n
- */
-
-#include "adc.h"
-#define TEST_PARAM_ARGC_1 1
-#define TEST_PARAM_ARGC_2 2
-#define TEST_PARAM_ARGC_3 3
-#define TEST_PARAM_ARGC_4 4
-#define TEST_PARAM_ARGC_5 5
-#define TEST_PARAM_ARGC_6 6
-#define TEST_PARAM_ARGC_7 7
-#define TEST_PARAM_4_BYTES 4
-#define TEST_PARAM_8_BYTES 8
-typedef enum {
- SUITE_OK = 0,
- SUITE_UNKNOWN_FUNCTION = -1,
- SUITE_ERROR_TIMED_OUT = -2,
- SUITE_ERROR_BAD_PARAMS = -3,
- SUITE_ERROR_PIN_ALLOCATION = -4,
- SUITE_ERROR_PIN_DEALLOCATION = -5,
- SUITE_ERROR_UNEXPECTED_INTERRUPT = -6,
- SUITE_ALLOC_FAILED = -7,
- SUITE_CONFIG_FAILED = -8,
- SUITE_TEST_FAILED = -254,
-} magservice_error_e;
-
-#if defined(CONFIG_ADC_SUPPORT_AFE)
-
-#error CONFIG_ADC_SUPPORT_AFE
-
-#include "hal_adc_v152.h"
-#include "hal_adc_v152_regs_op.h"
-#else
-#include "hal_adc_v151.h"
-#include "hal_adc_v151_regs_op.h"
-#endif
-
-#include "adc_porting.h"
-#include "pinctrl.h"
-#include "debug_print.h"
-#include "soc_osal.h"
-#include "tcxo.h"
-#include "irmalloc.h"
-#include "errcode.h"
-#include "common_def.h"
-
-#include "chip_core_irq.h"
-#include "chip_io.h"
-#include "gpio.h"
-#include "pm_veto.h"
-
-#include "rtc.h"
-#include "timer.h"
-#include "systick.h"
-
-
-static bool g_batter_service_initialled = false;
-
-#include "tcxo.h"
-
-#include "cmsis_os2.h"
+
#include "input_app.h"
-#include "mmc5603_hal.h"
+#include "mag_hal.h"
#include "mag_service.h"
-#include "mmc_customer.h"
#include "custom_utils.h"
-#ifdef BOARD_U8
-#include "vc9202_hal.h"
-#endif
-
-
#include "custom_runtime.h"
+
/***
* 其他cmd在Header里定义,对外开放
*/
ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
sizeof(common_notify_mail_t), 0);
if (ret != OSAL_SUCCESS) {
- MMC_ERROR("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+ PRINT("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
}
}
if (mail.comm.app == MAG_SERVICE_CMD_TIMER_CHECK) {
// mag_service_check_and_enable_charge();
// MMC_LOG("MAG_SERVICE_CMD_TIMER_CHECK\r\n");
- mmc5603_check();
+ // mmc5603_check();
+ mag_sensor_check();
}else if (mail.comm.app == MAG_SERVICE_CMD_START_CHECK){
uapi_dev_runtime_set_mmc_status(1);
do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_READ, NULL, 0);
- mmc5603_start();
+ // mmc5603_start();
+ mag_sensonr_start();
LOS_Mdelay(20);
mag_service_running_stat = true;
// uapi_pm_add_sleep_veto(PM_ID_SCREEN);
do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_SAVE, NULL, 0);
mag_service_running_stat = false;
osTimerStop(g_mag_service_timer);
- mmc5603_stop();
+ // mmc5603_stop();
+ mag_sensonr_stop();
LOS_Mdelay(20);
// uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
if (osal_msg_queue_create("mag_service_queue", APP_BOARD_MSG_COUNT, &g_app_queue,
0, sizeof(common_notify_mail_t)) != ERRCODE_SUCC) {
- MMC_ERROR("[mag][service] app create mail fail\n");
+ PRINT("[mag][service] app create mail fail\n");
}
}
#define MAG_BOARD_TASK_SIZE 0x1000
errcode_t uapi_mag_service_init(void)
{
-
PRINT("uapi_mag_service_init !\r\n");
-#ifdef BOARD_U8
- mmc5603_poweron();
-#endif
- if(CUSTOM_MMC5603_CheckID()!=1)
+ if(mag_get_chip_id() != MAG_SENSOR_CHIP_ID)
{
//TODO 设置磁力计检测是否存在标识
PRINT("MMC5603 not found!\r\n");
-#ifdef BOARD_U8
- mmc5603_poweroff();
-#endif
// return ERRCODE_FAIL;
}
- mmc5603_stop();
-#ifdef BOARD_U8
- mmc5603_poweroff();
-#endif
+
g_mag_sensor_exist = true;
app_task_definition_t taskcfg={0};
// void mag_service_service_suspend(void)
// {
// MMC_LOG("mag_service_service suspend!\r\n");
-// }
\ No newline at end of file
+// }
+
+void mag_start(void)
+{
+ do_mag_service_check_msg(MAG_SERVICE_CMD_START_CHECK);
+}
+
+void mag_stop(void)
+{
+ do_mag_service_check_msg(MAG_SERVICE_CMD_STOP_CHECK);
+}
\ No newline at end of file
* @Author: penglei 1624952103@qq.com
* @Date: 2024-12-16 09:56:44
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-12-18 17:23:06
+ * @LastEditTime: 2025-05-16 15:24:45
* @FilePath: /sdk615/code/sdk/drivers/peripheral/mag/service/mag_service.h
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
*/
void do_mag_service_check_msg(int cmd);
-float mag_service_get_fAzimuth(void);
-float mag_service_get_fPitch(void);
-float mag_service_get_fRoll(void);
+void mag_start(void);
+void mag_stop(void);
-int mag_service_get_iAccuracy(void);
-
#ifdef __cplusplus
#if __cplusplus
}
add_subdirectory_if_exist(ppgBleService)
add_subdirectory_if_exist(vc9202)
add_subdirectory_if_exist(vc921x)
-add_subdirectory_if_exist(gh3x2x)
\ No newline at end of file
+add_subdirectory_if_exist(gh3x2x)
+add_subdirectory_if_exist(hal)
\ No newline at end of file
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-02-18 14:35:27
+ * @LastEditTime: 2025-05-15 11:56:34
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
if (enable == 1)
{
// ppg_service_running_stat = true;
- uapi_pm_control(PM_APP_WAKE_NEEDED);
+ // uapi_pm_control(PM_APP_WAKE_NEEDED);
tyhx_poweron();
// GH3X2X_AFE_StartFunction(mode);
GH3X2X_AFE_Init();
} else {
- uapi_pm_control(PM_APP_WAKE_NONEED);
+ // uapi_pm_control(PM_APP_WAKE_NONEED);
GH3X2X_AFE_StopSampling();
tyhx_poweroff();
}
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "ppg_hal")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/ppg_hal.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
--- /dev/null
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-03-13 15:08:38
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 18:45:57
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
+ * @Description:
+ *
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <math.h>
+#include "ppg_hal.h"
+#include "pinctrl_porting.h"
+#include "hal_gpio.h"
+#include "pm_control.h"
+
+
+#include "custom_utils.h"
+
+
+#ifdef PPG_HX3695
+#include "tyhx_hrs_custom.h"
+#include "hx3695.h"
+#endif
+
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_service.h"
+#endif
+
+// S_AGPIO_L26 心率复位 PPG reset
+#define GPIO_PIN_PRG_RESET S_AGPIO_L26
+// S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
+#define GPIO_PIN_PRG_LED_ON S_AGPIO_R0
+
+void ppg_power_on(void)
+{
+#ifdef PPG_HX3695
+ uapi_pin_set_mode(GPIO_PIN_PRG_RESET, (pin_mode_t)HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(GPIO_PIN_PRG_RESET, GPIO_DIRECTION_OUTPUT);
+ uapi_gpio_set_val(GPIO_PIN_PRG_RESET, GPIO_LEVEL_HIGH);
+
+ uapi_pin_set_mode(GPIO_PIN_PRG_LED_ON, (pin_mode_t)HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(GPIO_PIN_PRG_LED_ON, GPIO_DIRECTION_OUTPUT);
+ uapi_gpio_set_val(GPIO_PIN_PRG_LED_ON, GPIO_LEVEL_HIGH);
+ LOS_Mdelay(50);
+#endif
+}
+
+void ppg_power_off(void)
+{
+#ifdef PPG_HX3695
+ uapi_pin_set_mode(GPIO_PIN_PRG_RESET, (pin_mode_t)HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(GPIO_PIN_PRG_RESET, GPIO_DIRECTION_OUTPUT);
+ uapi_gpio_set_val(GPIO_PIN_PRG_RESET, GPIO_LEVEL_LOW);
+
+ uapi_pin_set_mode(GPIO_PIN_PRG_LED_ON, (pin_mode_t)HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(GPIO_PIN_PRG_LED_ON, GPIO_DIRECTION_OUTPUT);
+ uapi_gpio_set_val(GPIO_PIN_PRG_LED_ON, GPIO_LEVEL_LOW);
+ LOS_Mdelay(50);
+#endif
+}
+
+uint8_t ppg_get_hrs(void)
+{
+ uint8_t hrs = 0;
+#ifdef PPG_HX3695
+ hrs = hx3695_get_hrs();
+ // printf("ppg_get_hrs : %d\n",hrs);
+#endif
+ return hrs;
+}
+
+uint8_t ppg_get_spo2(void)
+{
+ uint8_t spo2 = 0;
+#ifdef PPG_HX3695
+ spo2 = hx3695_get_spo2();
+#endif
+ return spo2;
+}
+
+uint8_t ppg_get_wear_status(void)
+{
+ uint8_t wear_status = 0;
+#ifdef PPG_HX3695
+ wear_status = hx3695_get_wear_status();
+#endif
+ return wear_status;
+}
+
+uint8_t ppg_get_chip_id(void)
+{
+ uint8_t chip_id = 0;
+#ifdef PPG_HX3695
+ chip_id = hx3695_chip_check();
+#endif
+ return chip_id;
+}
+
+void ppg_wear_timer_handler(void)
+{
+ // printf("ppg_wear_timer_handler\n");
+#ifdef PPG_HX3695
+ wear_mode_timeout_handler(NULL);
+#endif
+}
+
+void ppg_hrs_timer_handler(void)
+{
+ // printf("ppg_hrs_timer_handler\n");
+#ifdef PPG_HX3695
+ heart_rate_meas_timeout_handler(NULL);
+#endif
+}
+
+void ppg_agc_timer_handler(void)
+{
+ // printf("ppg_agc_timer_handler\n");
+#ifdef PPG_HX3695
+ agc_timeout_handler(NULL);
+#endif
+}
+
+
+void ppg_send_cmd_to_driver(char* mode, uint8_t enable)
+{
+ // printf("ppg_send_cmd_to_driver \n");
+#ifdef PPG_HX3695
+ WORK_MODE_T md = NULL_MODE;
+ if (strcmp(mode, "hrs") == 0) {
+ md = HRS_MODE;
+ } else if (strcmp(mode, "hrv") == 0) {
+ md = HRV_MODE;
+ } else if (strcmp(mode, "spo2") == 0) {
+ md = SPO2_MODE;
+ } else if (strcmp(mode, "leaklight") == 0) {
+ md = FT_LEAK_LIGHT_MODE;
+ } else if (strcmp(mode, "graycard") == 0) {
+ md = FT_GRAY_CARD_MODE;
+ } else if (strcmp(mode, "ledoff") == 0) {
+ md = FT_LED_OFF_MODE;
+ } else if (strcmp(mode, "wear") == 0) {
+ md = WEAR_MODE;
+ } else if (strcmp(mode, "single") == 0) {
+ md = FT_SINGLE_CHECK_MODE;
+ }
+
+
+ if (enable == 1 || md == FT_LED_OFF_MODE) {
+ // ppg_service_running_stat = true;
+ uapi_pm_control(PM_APP_WAKE_NEEDED);
+ ppg_power_on();
+ //custom_i2c_reset();
+ hx3695_init(md);
+ } else {
+
+ // ppg_service_running_stat = false;
+ if(md == HRS_MODE|| md == FT_LEAK_LIGHT_MODE || md == FT_GRAY_CARD_MODE || md == WEAR_MODE || md == FT_SINGLE_CHECK_MODE)
+ {
+#ifdef HRS_ALG_LIB
+ hx3695_hrs_disable();
+ // PRINT("uapi_dev_runtime_get_sleep_monitoring_status : %d \n",uapi_dev_runtime_get_sleep_monitoring_status());
+ // PRINT("uapi_dev_runtime_get_hrs_passivity_flag : %d \n",uapi_dev_runtime_get_hrs_passivity_flag());
+ if(uapi_dev_runtime_get_sleep_monitoring_status() && uapi_dev_runtime_get_hrs_passivity_flag())//处于睡眠监测 且在心率周期检测期间 上报活体佩戴
+ {
+ hx3695_wearstatus_update();
+ uapi_dev_runtime_set_hrs_passivity(0);//清除被动检测runtime
+ }
+#endif
+ }else if(md == HRV_MODE)
+ {
+#ifdef HRV_ALG_LIB
+ hx3695_hrv_disable();
+#endif
+ }else if(md == SPO2_MODE)
+ {
+#ifdef SPO2_ALG_LIB
+ hx3695_spo2_disable();
+#endif
+ }
+ else{
+#ifdef HRS_ALG_LIB
+ hx3695_hrs_disable();
+#endif
+ }
+ uapi_pm_control(PM_APP_WAKE_NONEED);
+ ppg_power_off();
+ }
+#endif
+}
\ No newline at end of file
--- /dev/null
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-06-07 11:18:26
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-16 10:53:11
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.h
+ * @Description:
+ *
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
+ */
+#ifndef PPG_HAL_H__
+#define PPG_HAL_H__
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#include "stdint.h"
+#include "tyhx_hrs_custom.h"
+
+#define AGC_TIMER_MODE 0
+#define HRS_TIMER_MODE 1
+#define WEAR_TIMER_MODE 2
+
+#ifdef PPG_HX3695
+#define PPG_CHIP_ID 0X65
+#else
+#define PPG_CHIP_ID 0
+#endif
+
+typedef uint32_t PPG_CMD_TYPE_T ;
+
+void ppg_send_cmd_to_driver(char* mode, uint8_t enable);
+// void ppg_timer_handler(uint8_t mode);
+void ppg_agc_timer_handler(void);
+void ppg_wear_timer_handler(void);
+void ppg_hrs_timer_handler(void);
+uint8_t ppg_get_chip_id(void);
+uint8_t ppg_get_hrs(void);
+uint8_t ppg_get_spo2(void);
+uint8_t ppg_get_wear_status(void);
+
+void ppg_wear_status_update(uint8_t status);
+
+void ppg_power_on(void);
+void ppg_power_off(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif
\ No newline at end of file
${CMAKE_CURRENT_SOURCE_DIR}/hx3695_hrs_agc.c
${CMAKE_CURRENT_SOURCE_DIR}/hx3695_hrv_agc.c
${CMAKE_CURRENT_SOURCE_DIR}/hx3695_spo2_agc.c
- ${CMAKE_CURRENT_SOURCE_DIR}/hx3695_hal.c
+ #${CMAKE_CURRENT_SOURCE_DIR}/hx3695_hal.c
${CMAKE_CURRENT_SOURCE_DIR}/hx3695_hrs_custom.c
)
set(PUBLIC_HEADER
// #include "lv_dev.h"\r
// #include "app_task.h"\r
\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
#include "cywee_hal.h"\r
#include "cywee_service.h"\r
#include "custom_utils.h"\r
#include "custom_runtime.h"\r
+#endif\r
+\r
+#include "ppg_hal.h"\r
+\r
\r
FT_CUSTOM_RESULTS_t hrsresult ={0};\r
\r
int16_t gsen_fifo_y[64]={0};\r
int16_t gsen_fifo_z[64]={0};\r
\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
gsenson_t gsensordata[32];\r
+#endif\r
\r
static uint8_t msg_count = 0;\r
\r
//uint8_t alg_ram[10] = {0};\r
ppg_sensor_data_t ppg_s_data;\r
\r
-static int cywee_data = 0;\r
+static uint8_t hrs_result = 0;\r
static int history_wear_status = -1;\r
-static int cywee_wear_status = 0;\r
+static uint8_t wear_status = 0;\r
+static uint8_t spo2_result = 0;\r
\r
static uint8_t hx3695_chip_id = 0;\r
\r
}\r
#endif\r
\r
-bool hx3695_chip_check(void)\r
+uint8_t hx3695_chip_check(void)\r
{\r
uint8_t i = 0;\r
uint8_t chip_id = 0;\r
//printf("hx3695_chip_check ok chip_id: 0x%x \r\n",chip_id);\r
//Efuse_Mode_Check();\r
hx3695_chip_id = chip_id;\r
- return true;\r
+ // return hx3695_chip_id;\r
}\r
}\r
\r
- printf(" hx3695_chip_check fail! chip_id: 0x%x \r\n", chip_id);\r
+ printf(" hx3695 chip_id: 0x%x \r\n", chip_id);\r
\r
- return false;\r
+ return chip_id;\r
}\r
\r
void hx3695_get_id(uint8_t *ppg_id)\r
// 初始化调用入口函数\r
bool hx3695_init(WORK_MODE_T mode)\r
{\r
- hx3695_msg_callback_t func;\r
+ // hx3695_msg_callback_t func;\r
\r
\r
//TYHX_LOG("this chip hx3695_init mode: %d !! \r\n", mode);\r
//TYHX_LOG(" hx3695_init mode : LEAK_LIGHT_MODE \n");\r
hx3695_factroy_test(LEAK_LIGHT_TEST);\r
\r
- func = hx3695_get_send_msg_callback_func();\r
- if(func != NULL)\r
- {\r
- func(HX3695_MSG_TYPE_LEAKLIGHT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- }\r
+ // func = hx3695_get_send_msg_callback_func();\r
+ // if(func != NULL)\r
+ // {\r
+ // func(HX3695_MSG_TYPE_LEAKLIGHT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // }\r
break;\r
\r
case FT_GRAY_CARD_MODE:\r
//TYHX_LOG(" hx3695_init mode : GRAY_CARD_MODE \n");\r
hx3695_factroy_test(GRAY_CARD_TEST);\r
\r
- func = hx3695_get_send_msg_callback_func();\r
- if(func != NULL)\r
- {\r
- func(HX3695_MSG_TYPE_GRAYCARD_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- }\r
+ // func = hx3695_get_send_msg_callback_func();\r
+ // if(func != NULL)\r
+ // {\r
+ // func(HX3695_MSG_TYPE_GRAYCARD_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // }\r
break;\r
\r
case FT_INT_TEST_MODE:\r
}\r
}\r
\r
+uint8_t hx3695_get_hrs(void)\r
+{\r
+ return hrs_result;\r
+}\r
+\r
+uint8_t hx3695_get_spo2(void)\r
+{\r
+ return spo2_result;\r
+}\r
+\r
+\r
+uint8_t hx3695_get_wear_status(void)\r
+{\r
+ return wear_status;\r
+}\r
+\r
void hx3695_set_hrs_ble_swtich(uint8_t cmd)\r
{\r
hrs_ble_falg = cmd;\r
\r
void hx3695_wearstatus_update(void)\r
{\r
- if(history_wear_status != cywee_wear_status)\r
+ if(history_wear_status != wear_status)\r
{\r
- history_wear_status = cywee_wear_status;\r
- cywee_data = history_wear_status;\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data);\r
+ history_wear_status = wear_status;\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&wear_status);\r
+#endif\r
}\r
}\r
//脱腕上报未佩戴信息\r
void hx3695_unwearstatus_update(void)\r
{\r
- hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
- if(func != NULL && !uapi_dev_runtime_get_train_status())\r
- {\r
- hrsresult.lastesthrs = 0;\r
- hrsresult.wearstatus = 0;\r
- //为了主界面脱腕灵敏;需要增加未佩戴\r
- func(HX3695_MSG_TYPE_HRS_UPDATE, &hrsresult, sizeof(FT_CUSTOM_RESULTS_t));\r
- func(HX3695_MSG_TYPE_WEARSTAT_UPDATE, &hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- }\r
+ // hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
+ // if(func != NULL && !uapi_dev_runtime_get_train_status())\r
+ // {\r
+ // hrsresult.lastesthrs = 0;\r
+ // hrsresult.wearstatus = 0;\r
+ // //为了主界面脱腕灵敏;需要增加未佩戴\r
+ // func(HX3695_MSG_TYPE_HRS_UPDATE, &hrsresult, sizeof(FT_CUSTOM_RESULTS_t));\r
+ // func(HX3695_MSG_TYPE_WEARSTAT_UPDATE, &hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // }\r
\r
if(uapi_dev_runtime_get_train_status())\r
{\r
- cywee_wear_status = 0;\r
+ wear_status = 0;\r
hx3695_wearstatus_update();\r
- cywee_data = 0;\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&cywee_data);\r
+ hrs_result = 0;\r
+\r
}\r
} \r
\r
// {\r
// return;\r
// }\r
+ #ifdef SUPPORT_CYWEE_SERVICE\r
memset(gsensordata,0.0f,sizeof(gsenson_t) * *count);\r
\r
gsensor_get_n_data(*count,gsensordata); \r
//PRINT("hxdata:%d/%d %d %d %.3f %.3f %.3f %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsensordata[ii].x,gsensordata[ii].y,gsensordata[ii].z,ppg_s_data.green_cur);\r
\r
}\r
+#endif\r
hrs_wear_status = hx3695_hrs_get_wear_status();\r
//PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status);\r
\r
{\r
if(hrsresult.hr_living == MSG_LIVING_TRUE)\r
{\r
- cywee_wear_status = 1;\r
+ wear_status = 1;\r
if(hrsresult.lastesthrs > 30 && hrsresult.lastesthrs < 220)\r
get_avg_hrs(hrsresult.lastesthrs);\r
}\r
else\r
{\r
- cywee_wear_status = 0;\r
+ wear_status = 0;\r
}\r
}\r
else\r
{\r
hrsresult.wearstatus = MSG_HRS_NO_WEAR;\r
hrsresult.lastesthrs = 0;\r
- cywee_wear_status = 0;\r
+ wear_status = 0;\r
}\r
\r
\r
- hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
- if(func != NULL)\r
- {\r
- if(his_wear == hrsresult.wearstatus)\r
- {\r
- wear_cnt++;\r
- if(wear_cnt >= 2 && !his_wear) //未佩戴超过2次 上报未佩戴信息\r
- {\r
- func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- wear_cnt = 0;\r
- }\r
- }\r
- else\r
- {\r
- his_wear = hrsresult.wearstatus;\r
- wear_cnt = 0;\r
- }\r
- }\r
+ // hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
+ // if(func != NULL)\r
+ // {\r
+ // if(his_wear == hrsresult.wearstatus)\r
+ // {\r
+ // wear_cnt++;\r
+ // if(wear_cnt >= 2 && !his_wear) //未佩戴超过2次 上报未佩戴信息\r
+ // {\r
+ // func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // wear_cnt = 0;\r
+ // }\r
+ // }\r
+ // else\r
+ // {\r
+ // his_wear = hrsresult.wearstatus;\r
+ // wear_cnt = 0;\r
+ // }\r
+ // }\r
//PRINT("hrsresult.wearstatus : %d , his_wear : %d , wear_cnt : %d \n",hrsresult.wearstatus,his_wear,wear_cnt);\r
- // PRINT("hrsresult.wearstatus : %d , cywee_wear_status : %d , hr_living : %d \n",hrsresult.wearstatus,cywee_wear_status,hrsresult.hr_living);\r
+ // PRINT("hrsresult.wearstatus : %d , wear_status : %d , hr_living : %d \n",hrsresult.wearstatus,wear_status,hrsresult.hr_living);\r
// if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE)\r
// {\r
// if(hrsresult.lastesthrs > 30 && hrsresult.lastesthrs < 220)\r
// hrsresult.lastesthrs = 0;\r
// }\r
\r
+ // PRINT("hrs : %d , wear_status : %d \n",hrsresult.lastesthrs,hrsresult.wearstatus);\r
+ hrs_result = hrsresult.lastesthrs;\r
+\r
msg_count++;\r
if(msg_count >= 3)\r
{\r
msg_count = 0;\r
- if(func != NULL)\r
- {\r
- //PRINT("hrsresult.lastesthrs : %d \n",hrsresult.lastesthrs);\r
- func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- if(uapi_get_cywee_static_state())\r
- {\r
- func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- }\r
- }\r
+ // if(func != NULL)\r
+ // {\r
+ // //PRINT("hrsresult.lastesthrs : %d \n",hrsresult.lastesthrs);\r
+ // func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // if(uapi_get_cywee_static_state())\r
+ // {\r
+ // func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // }\r
+ // }\r
\r
if(uapi_dev_runtime_get_train_status())\r
{\r
hx3695_wearstatus_update();\r
- cywee_data = hrsresult.lastesthrs;\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&cywee_data);\r
+ // hrs_result = hrsresult.lastesthrs;\r
+ // do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&cywee_data);\r
}\r
}\r
\r
DEBUG_PRINTF("block_cnt: %d, data_cnt:%d, hr_result:%d,ir_quality:%d,motion:%d,poor_signal:%d,reliable_score_result:%d,screen_up:%d,spo2_result:%d\r\n",spo2_alg_results.block_cnt,spo2_alg_results.data_cnt,spo2_alg_results.hr_result,spo2_alg_results.ir_quality,spo2_alg_results.motion,spo2_alg_results.poor_signal,spo2_alg_results.reliable_score_result,spo2_alg_results.screen_up,spo2_alg_results.spo2_result);\r
\r
hrsresult.lastestspo2 = spo2_alg_results.spo2_result;\r
-\r
+ spo2_result = hrsresult.lastestspo2;\r
// if(hrsresult.lastestspo2)\r
{\r
// store_latest_spo2(hrsresult.lastestspo2);\r
// hr_sensor_notify_factory_test();\r
}\r
\r
- hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
- if(func != NULL)\r
- {\r
- hrsresult.wearstatus = spo2_wear_status;\r
- func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- func(HX3695_MSG_TYPE_SPO2_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- }\r
+ // hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
+ // if(func != NULL)\r
+ // {\r
+ // hrsresult.wearstatus = spo2_wear_status;\r
+ // func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // func(HX3695_MSG_TYPE_SPO2_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ // }\r
\r
\r
\r
hx3695_wear_msg_code_t hx3695_wear_status;\r
\r
hx3695_check_touch_read(&ppg_s_data);\r
- cywee_wear_status = hx3695_check_touch_send_data(ir_buf,*count);\r
+ wear_status = hx3695_check_touch_send_data(ir_buf,*count);\r
hx3695_wearstatus_update();\r
extern uint8_t notouch_cnt;\r
extern uint8_t touch_cnt;\r
bool hx3695_write_reg(uint8_t addr, uint8_t data); \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
+uint8_t 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_unwearstatus_update(void);\r
void hx3695_set_hrs_ble_swtich(uint8_t cmd);\r
uint8_t hx3695_get_hrs_ble_swtich(void);\r
-#include "hx3695_hal.h"\r
+uint8_t hx3695_get_hrs(void);\r
+uint8_t hx3695_get_spo2(void);\r
+uint8_t hx3695_get_wear_status(void);\r
\r
#endif\r
#include "hx3695.h"\r
#include "hx3695_check_touch.h"\r
#include "hx3695_hrs_agc.h"\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
#include "cywee_hal.h"\r
+#endif\r
\r
hx3695_wear_msg_code_t hx3695_wear_status = MSG_NO_WEAR;\r
hx3695_wear_msg_code_t hx3695_wear_status_pre = MSG_NO_WEAR;\r
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-11-19 19:40:35
+ * @LastEditTime: 2025-05-15 17:02:49
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
if (enable == 1 || md == FT_LED_OFF_MODE) {
// ppg_service_running_stat = true;
- uapi_pm_control(PM_APP_WAKE_NEEDED);
+ // uapi_pm_control(PM_APP_WAKE_NEEDED);
tyhx_poweron();
//custom_i2c_reset();
hx3695_init(md);
hx3695_hrs_disable();
#endif
}
- uapi_pm_control(PM_APP_WAKE_NONEED);
+ // uapi_pm_control(PM_APP_WAKE_NONEED);
tyhx_poweroff();
}
}
\ No newline at end of file
return 1;
}
-// S_AGPIO_L26 心率复位 PPG reset
-#define GPIO_PIN_PRG_RESET S_AGPIO_L26
-// S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
-#define GPIO_PIN_PRG_LED_ON S_AGPIO_R0
-
-uint32_t tyhx_poweron(void)
-{
- uapi_pin_set_mode(GPIO_PIN_PRG_RESET, (pin_mode_t)HAL_PIO_FUNC_GPIO);
- uapi_gpio_set_dir(GPIO_PIN_PRG_RESET, GPIO_DIRECTION_OUTPUT);
- uapi_gpio_set_val(GPIO_PIN_PRG_RESET, GPIO_LEVEL_HIGH);
-
- uapi_pin_set_mode(GPIO_PIN_PRG_LED_ON, (pin_mode_t)HAL_PIO_FUNC_GPIO);
- uapi_gpio_set_dir(GPIO_PIN_PRG_LED_ON, GPIO_DIRECTION_OUTPUT);
- uapi_gpio_set_val(GPIO_PIN_PRG_LED_ON, GPIO_LEVEL_HIGH);
- tyhx_delay_ms(100);
- return 0;
-}
-uint32_t tyhx_poweroff(void)
-{
- uapi_pin_set_mode(GPIO_PIN_PRG_RESET, (pin_mode_t)HAL_PIO_FUNC_GPIO);
- uapi_gpio_set_dir(GPIO_PIN_PRG_RESET, GPIO_DIRECTION_OUTPUT);
- uapi_gpio_set_val(GPIO_PIN_PRG_RESET, GPIO_LEVEL_LOW);
-
- uapi_pin_set_mode(GPIO_PIN_PRG_LED_ON, (pin_mode_t)HAL_PIO_FUNC_GPIO);
- uapi_gpio_set_dir(GPIO_PIN_PRG_LED_ON, GPIO_DIRECTION_OUTPUT);
- uapi_gpio_set_val(GPIO_PIN_PRG_LED_ON, GPIO_LEVEL_LOW);
- tyhx_delay_ms(50);
- return 0;
-}
* History: \n
* 2022-07-20, Create file. \n
*/
-#ifndef HX3695_AT_PROCESS_H
-#define HX3695_AT_PROCESS_H
+#ifndef PPG_AT_PROCESS_H
+#define PPG_AT_PROCESS_H
#include <stdint.h>
#include <stdio.h>
#include "thread_init.h"
#include "custom_utils.h"
#include "custom_save_runtime.h"
+#include "ppg_hal.h"
+
+// #ifdef PPG_HX3695
+// #include "hx3695.h"
+// #endif
#if defined(PPG_VC9202)
#include "vc9202_hal.h"
#include "gh3x2x_hal.h"
#include "gh3x2x_afe_drv.h"
#else
-#include "hx3695_hal.h"
-#include "hx3695.h"
#endif
static bool g_ppg_service_initialled = false;
errcode_t update_leaklight_event_notify(uint8_t *data)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "send lightdata to ui %s",data);
- CustomEventPublish(TOPIC_EVENT_LEAKLIGHT_UPDATA,(uint8_t*)data,strlen((char*)data));
+ //CustomEventPublish(TOPIC_EVENT_LEAKLIGHT_UPDATA,(uint8_t*)data,strlen((char*)data));
return 0;
}
errcode_t update_leaklight_event_sendmsg_toUI(uint8_t *data)
errcode_t update_graycard_event_notify(uint8_t *data)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "send carddata to ui %s",data);
- CustomEventPublish(TOPIC_EVENT_GRAYCARD_UPDATA,(uint8_t*)data,strlen((char*)data));
+ //CustomEventPublish(TOPIC_EVENT_GRAYCARD_UPDATA,(uint8_t*)data,strlen((char*)data));
return 0;
}
errcode_t update_graycard_event_sendmsg_toUI(uint8_t *data)
//血氧
errcode_t update_spo2_event_notify(uint8_t spo2)
{
- CustomEventPublish(TOPIC_EVENT_SPO2_UPDATE,(uint8_t*)&spo2,sizeof(spo2));
+ //CustomEventPublish(TOPIC_EVENT_SPO2_UPDATE,(uint8_t*)&spo2,sizeof(spo2));
return 0;
}
errcode_t update_spo2_event_sendmsg_toUI(uint8_t spo2)
//心率
errcode_t update_hrs_event_notify(uint8_t hrs)
{
- CustomEventPublish(TOPIC_EVENT_HEARTRATE_UPDATA,(uint8_t*)&hrs,sizeof(hrs));
+ //CustomEventPublish(TOPIC_EVENT_HEARTRATE_UPDATA,(uint8_t*)&hrs,sizeof(hrs));
return 0;
}
errcode_t update_hrs_event_sendmsg_toUI(uint8_t hrs)
//穿戴状态
errcode_t update_wearstatus_event_notify(int32_t wearstatus)
{
- CustomEventPublish(TOPIC_EVENT_WEARSTATE_UPDATE,(uint8_t*)&wearstatus,sizeof(wearstatus));
+ //CustomEventPublish(TOPIC_EVENT_WEARSTATE_UPDATE,(uint8_t*)&wearstatus,sizeof(wearstatus));
return 0;
}
errcode_t update_wearstatus_event_sendmsg_toUI(int32_t wearstatus)
//静息心率
errcode_t update_static_hrs_event_notify(int32_t hrs)
{
- CustomEventPublish(TOPIC_EVENT_STATIC_HEARTRATE_UPDATA,(uint8_t*)&hrs,sizeof(hrs));
+ //CustomEventPublish(TOPIC_EVENT_STATIC_HEARTRATE_UPDATA,(uint8_t*)&hrs,sizeof(hrs));
return 0;
}
errcode_t update_static_hrs_event_sendmsg_toUI(int32_t hrs)
return ERRCODE_SUCC;
}
-#include "hx3695_hal.h"
-#include "hx3695.h"
+
void hx3695_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen)
{
+#if 0
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "hx3695_msg_callback");
FT_CUSTOM_RESULTS_t sensor_data; // 使用更通用的名称 sensor_data
#if 1
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Unknown sensor message type");
break;
}
+#endif
}
#endif
if (ppg_sensor_exist == false)
return OSAL_FAILURE;
+ // printf("send_ppg_cmd_msg cmd : 0x%x\n",cmd);
+
PPG_CMD_TYPE_T mail = 0;
mail = cmd;
ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
}
if((wear_mode_state == 1) && (mail > 0x10) && mail != PPG_SERVICE_CMD_TYPE_STOP_WEAR_MODE_TEST)
{
- uapi_save_runtime_log(RUNTIME_LOG_WEAR_MIN_STOP);
+ // uapi_save_runtime_log(RUNTIME_LOG_WEAR_MIN_STOP);
wear_mode_state = 0;
#ifdef PPG_HX3695
ppg_send_cmd_to_driver("wear",0);
char* cmd = "hrs";
int enable = 1;
if (mail == PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK){
-#ifdef PPG_HX3695
- heart_rate_meas_timeout_handler(NULL);
-#endif
+// #ifdef PPG_HX3695
+// heart_rate_meas_timeout_handler(NULL);
+// #endif
+ ppg_hrs_timer_handler();
continue;
}else if (mail == PPG_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK){
-#ifdef PPG_HX3695
- agc_timeout_handler(NULL);
-#endif
+// #ifdef PPG_HX3695
+// agc_timeout_handler(NULL);
+// #endif
+ ppg_agc_timer_handler();
continue;
}else if(mail == PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_5000TIMER_CALLBACK){
-#ifdef PPG_HX3695
- wear_mode_timeout_handler(NULL);
-#endif
+// #ifdef PPG_HX3695
+// wear_mode_timeout_handler(NULL);
+// #endif
+ ppg_wear_timer_handler();
continue;
}else if (mail == PPG_SERVICE_CMD_TYPE_DO_PPG_TEST){
//do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OPEN_GET_ACC,NULL);
- uapi_save_runtime_log(RUNTIME_LOG_HEART_DRIVER_MEASURE);
+ // uapi_save_runtime_log(RUNTIME_LOG_HEART_DRIVER_MEASURE);
cmd = "hrs";
enable = 1;
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_HEART);
enable = 1;
}else if (mail == PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_TEST){
if (keep_in_wear_det_mod == 0) continue;;
- uapi_save_runtime_log(RUNTIME_LOG_WEAR_MIN_START);
+ // uapi_save_runtime_log(RUNTIME_LOG_WEAR_MIN_START);
cmd = "wear";
enable = 1;
wear_mode_state = 1;
enable = 0;
wear_mode_state = 0;
}else if (mail == PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST){
- uapi_save_runtime_log(RUNTIME_LOG_HEART_DRIVER_MEASURE_END);
+ // uapi_save_runtime_log(RUNTIME_LOG_HEART_DRIVER_MEASURE_END);
cmd = "hrs";
enable = 0;
// uint8_t cnt = pm_veto_get_id_cnt(PM_ID_HEART);
else if (mail == PPG_SERVICE_CMD_TYPE_OPEN_HRS_BLE)
{
#ifdef PPG_HX3695
- hx3695_set_hrs_ble_swtich(1);
+ // hx3695_set_hrs_ble_swtich(1);
#endif
continue ;
}
else if (mail == PPG_SERVICE_CMD_TYPE_CLOSE_HRS_BLE)
{
#ifdef PPG_HX3695
- hx3695_set_hrs_ble_swtich(0);
+ // hx3695_set_hrs_ble_swtich(0);
#endif
continue ;
}else if (mail == PPG_SERVICE_CMD_TYPE_INT_HANDLER){
continue ;
}
-#ifdef PPG_VC9202
+#ifdef PPG_HX3695
+ ppg_send_cmd_to_driver(cmd,enable);
+#elif defined (PPG_VC9202)
ppg_send_cmd_to_vc9202_driver(cmd,enable);
#elif defined(PPG_VC921X)
ppg_send_cmd_to_vc921x_driver(cmd,enable);
}
errcode_t uapi_ppg_service_init(void)
{
-
-
PRINT("uapi_ppg_service_init !\r\n");
- tyhx_poweron();
-
-#ifdef PPG_HX3695
+ ppg_power_on();
- if ( hx3695_chip_check() == false)
- {
- //TODO 没找到3695,退出线程
- PRINT("3695 not exist!\r\n");
- tyhx_poweroff();
- return ERRCODE_FAIL;
- }
- hx3695_register_msg_callback(hx3695_msg_callback);//注册驱动回调
- // //ppg_send_cmd_to_driver("wear",0);
-#elif defined(PPG_VC9202)
- if ( vc9202_drv_get_chip_id() != 0x21)
+ if (ppg_get_chip_id() != PPG_CHIP_ID)
{
//TODO 没找到3695,退出线程
- PRINT("PPG_VC9202 not exist!\r\n");
- tyhx_poweroff();
+ PRINT("ppg not exist!\r\n");
+ ppg_power_off();
return ERRCODE_FAIL;
}
-#elif defined(PPG_GH3X2X)
- if (GH3X2X_AFE_CheckChipId() != 0)
- {
- //TODO 没找到3695,退出线程
- PRINT("PPG_GH3X2X not exist!\r\n");
- tyhx_poweroff();
- return ERRCODE_FAIL;
- }
-#endif
- tyhx_poweroff();
+ ppg_power_off();
ppg_sensor_exist = true;
// DEBUG_PRINTF("ppg_service_service suspend!\r\n");
// }
-
#ifdef __cplusplus
#if __cplusplus
}
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-12-24 10:25:14
+ * @LastEditTime: 2025-05-15 17:15:13
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
#endif
#ifdef PPG_HX3695
-#include "tyhx_hrs_custom.h"
-#include "hx3695.h"
-#include "hx3695_hal.h"
-#include "hx3695.h"
hx3695_msg_callback_t g_send_msg_toUI = NULL;
#endif
{
// ppg_service_running_stat = true;
- uapi_pm_control(PM_APP_WAKE_NEEDED);
+ // uapi_pm_control(PM_APP_WAKE_NEEDED);
tyhx_poweron();
#ifdef PPG_HX3695
hx3695_init(md);
#endif
- uapi_pm_control(PM_APP_WAKE_NONEED);
+ // uapi_pm_control(PM_APP_WAKE_NONEED);
tyhx_poweroff();
}
}
\ No newline at end of file
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-12-16 16:40:25
+ * @LastEditTime: 2025-05-15 11:56:40
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
if (enable == 1)
{
// ppg_service_running_stat = true;
- uapi_pm_control(PM_APP_WAKE_NEEDED);
+ // uapi_pm_control(PM_APP_WAKE_NEEDED);
tyhx_poweron();
vc921x_device = get_vc921x_device();
} else {
- uapi_pm_control(PM_APP_WAKE_NONEED);
+ // uapi_pm_control(PM_APP_WAKE_NONEED);
vc921x_device->ops->stop_work();
tyhx_poweroff();
}
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:28:07
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-19 10:28:18
+ * @FilePath: /FD230/code/sdk/zhihui/drivers/rotary_encoder/hx3507/hx3507_at_cmd.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/**
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
*
#endif /* __cplusplus */
#endif /* __cplusplus */
-at_cmd_table_t *get_mmc5603_cmd_table(uint32_t *cmd_count);
+at_cmd_table_t *get_hx3507_cmd_table(uint32_t *cmd_count);
#ifdef __cplusplus
#if __cplusplus
#include "button_porting.h"
#include "battery_service.h"
+#include "custom_utils.h"
/**
* 临时性去除充电禁止能力,待海思更新 充电线静态检测能力再回复。
fclose(fp);
}
+
+void battery_get_data_t(BATTERY_DATA_T **data,uint16_t *length)
+{
+ if(!len)
+ return;
+ *length = len;
+ *data = (BATTERY_DATA_T *)malloc(len);
+
+ if(*data == NULL)
+ return;
+
+ memcpy_s(*data,len,bat_t,len);
+ free(bat_t);
+}
+
+void battery_get_data(void)
+{
+ len = uapi_get_file_size(BAT_FILE_PATH);
+ if(!len)
+ return;
+
+ bat_t = (BATTERY_DATA_T *)malloc(len);
+ if(bat_t == NULL)
+ return;
+
+ FILE *fp;
+
+ fp = fopen(BAT_FILE_PATH, "rb");
+ if (fp == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bat_data file open failed");
+ free(bat_t);
+ return;
+ }
+
+ if(fread(bat_t, 1, len, fp) != len)
+ {
+ free(bat_t);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bat_data file read failed");
+ }
+ fclose(fp);
+}
+
+//保存电池信息到文件
+void battery_save_data(void)
+{
+ // len = uapi_get_file_size("/user/userdata/battery_data.bin");
+ // if(len > sizeof(BATTERY_DATA_T) * 24 * 7)
+ // {
+ // uapi_delete_files("/user/userdata/battery_data.bin");
+ // }
+
+ BATTERY_DATA_T data;
+ float voltage;
+ uint8_t percent = batteryservice_get_voltage(&voltage);
+ data.voltage = voltage;
+ data.percent = percent;
+ uapi_get_timestampe_ss(&data.tm);
+ data.stat = get_charge_stat();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "data.voltage : %f , data[i].percent : %d tm : %d",data.voltage,data.percent,data.tm);
+ // uapi_save_file_data("user/userdata/battery_data.bin",(uint8_t *)&data,sizeof(BATTERY_DATA_T),"ab");
+ battery_file_check(data,BAT_FILE_PATH);
+ // uapi_save_file_data("/user/userdata/battery.bin",&percent,1,"wb");
+}
+
+//保存电量到文件
+static void battery_save_percent(void)
+{
+ float voltage;
+ uint8_t percent = batteryservice_get_voltage(&voltage);
+ uapi_save_file_data("/user/userdata/battery.bin",&percent,1,"wb");
+ PRINT("battery_save_percent : %d",percent);
+}
+
+//从文件中读取电量
+uint8_t battery_get_percent_onstart(void)
+{
+ uint8_t percent = 0;
+ uint16_t len = 1;
+ uapi_get_file_data("/user/userdata/battery.bin",&percent,&len);
+ PRINT("battery_get_percent_onstart : %d",percent);
+ if(percent <= 100 && percent >= 0)
+ return percent;
+ else
+ return 0;
+}
+
static uint32_t get_current_timestamp(void)
{
uint32_t timestamp = 0;
#endif\r
\r
#include "ConfigModelC.h"\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
#include "cywee_ble_Service.h"\r
#endif\r
#ifdef SUPPORT_OHOSFWK\r
|| uuid_tmp == BLE_UUID_ATE_FACTORYTEST_SERVICE \r
|| uuid_tmp == BLE_UUID_PPG_BLE_SERVICE \r
|| uuid_tmp == ALIPAYY_SERVICE_ID\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
|| uuid_tmp == BLE_UUID_CYWEE_REPORT_SERVICE\r
#endif\r
) \r
bts_data_to_uuid_len2(BLE_UUID_PPG_BLE_SERVICE, &ppg_service_uuid);\r
\r
\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
\r
bt_uuid_t cywee_ble_service_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_ble_service_uuid);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ppg ble service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
}\r
\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
if (ble_gatts_cmp_uuid(uuid, &cywee_ble_service_uuid) == true){\r
ble_cywee_add_characters_and_descriptors(server_id,srv_handle);\r
ret = gatts_start_service(server_id, srv_handle);\r
ble_ppgtest_store_report_handle(result->value_handle);\r
}\r
\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
bt_uuid_t cywee_report_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &cywee_report_uuid);\r
\r
\r
ble_ppgtest_server_init(g_ble_server_id);\r
\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
ble_cywee_server_init(g_ble_server_id);\r
#endif\r
gattc_reg_id();\r
factory_recv_ota_data(p_msgbuf,msg_len,server_handle);\r
}\r
\r
-#ifdef SUPPORT_AT_CYWEE\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
else if (server_handle == get_cywee_ate_write_handl())\r
{\r
cywee_recv_cmd_data(p_msgbuf,msg_len,server_handle);\r
void HandleUpdatelcdMode(int f){}
void set_ota_upgrade(void){}
void custom_timer_callback(void){}
-// void Check_ble_adv_status(void){}
-// void check_dial_space(void){}
+
int uapi_hfp_disconnect_(void){return 0;}
int uapi_hfp_connect_(void){return 0;}
custom_timer_callback();
break;
case CUSTOM_CMD_MSG_BLE_ADV_CHECK:
+#ifdef SUPPORT_BLE_SERVICE
Check_ble_adv_status();
+#endif
break;
case CUSTOM_CMD_MSG_CHECK_DIAL_SPACE:
check_dial_space();
extern "C"
{
#endif
+
+#ifdef FACTORYTEST_SERVICE
+#include "factorytest_protocol.h"
+#endif
+
+
//进行修复开始
void repair_file_start(void){}
//进行运动存储
//void update_sleep_data(uint32_t sleep_timestamp,uint32_t wake_timestamp,uint32_t totaltime){}
//void update_nap_data(uint32_t sleep_timestamp,uint32_t wake_timestamp,uint32_t totaltime){}
//void custom_read_wear_data(void){}
-#ifndef FACTORYTEST_SERVICE
-// void factorytest_save_aging_data(void){}
-// void factorytest_read_aging_data(void){}
-// // void factorytest_get_aging_data(ble_aging_t *data){}
-// void factorytest_start_aging_test(void){}
-// void factorytest_stop_aging_test(void){}
-#endif
// void stopPlayingMusic(void){}
// void custom_setUpListCase(void){}
break;
case CUSTOM_FILEOPERATE_MSG_TYPE_AGING_DATA_READ:
+#ifdef FACTORYTEST_SERVICE
factorytest_read_aging_data();
+#endif
break;
case CUSTOM_FILEOPERATE_MSG_TYPE_AGING_DATA_SAVE:
+#ifdef FACTORYTEST_SERVICE
factorytest_save_aging_data();
+#endif
break;
case CUSTOM_FILEOPERATE_MSG_TYPE_POPUP_WINDOWS_DATA_LIST:
#include "battery_service.h"
#include "cywee_hal.h"
-#include "MMC5603.h"
-#include "mmc5603_hal.h"
-#include "mag_service.h"
#endif
#ifdef SUPPORT_A5133_SERVICE
#include "A5133main.h"
#include "bleEvent.h"
#endif
+
+#ifdef SUPORT_MAG_SERVICE
+#include "mag_hal.h"
+#endif
+
errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg)
{
if (task_cfg==NULL)
ble_SOS_data_init();
#ifdef SUPPORT_CAT1_SERVICE
- up_report_timer();
+ // up_report_timer();
#endif
read_jsonHistory_weather();
void mmc5603_getid(unsigned char *id)
{
- #ifdef FD230_650
- mmc5603_poweron();
- CUSTOM_MMC5603_GETID(id);
- mmc5603_poweroff();
+ #ifdef SUPORT_MAG_SERVICE
+ *id = mag_get_chip_id();
#endif
}
uint8_t uapi_get_cywee_static_state(void)
{
+#ifdef SUPPORT_CYWEE_SERVICE
return cywee_get_static_state();
+#else
+ return 0;
+#endif
}
#ifdef CYWEE_MAC_ACTIVE
}
return lrcValue;
}
+
+void uapi_cat1_remove_cat1_vote(void)
+{
+#ifdef SUPPORT_CAT1_SERVICE
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+ if (cnt == 1) {
+ uapi_pm_remove_sleep_veto(PM_ID_CAT1);
+ } else {
+ // 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");
+#endif
+}
+void uapi_cat1_add_cat1_vote(void)
+{
+#ifdef SUPPORT_CAT1_SERVICE
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+ if (cnt == 0) {
+ uapi_pm_add_sleep_veto(PM_ID_CAT1);
+ } else {
+ // 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");
+#endif
+}
+
\ No newline at end of file
uint8_t calculate_lrc(uint8_t *data,uint16_t len,uint8_t _lrcValue);
+void uapi_cat1_remove_cat1_vote(void);
+void uapi_cat1_add_cat1_vote(void);
+
#include "custom_utilscpp.h"
uint8_t enable = atol((char*)argv[1]);
#ifdef FD230_650
- enable_drag(direction,enable);
- uint8_t limit=get_drag_limit(direction);
- wstp_print("%s %s , current limit %d\r\n",enable==1?"enable":"disable",direction==0?"x":"y",limit);
+ // enable_drag(direction,enable);
+ // uint8_t limit=get_drag_limit(direction);
+ // wstp_print("%s %s , current limit %d\r\n",enable==1?"enable":"disable",direction==0?"x":"y",limit);
#endif
return ERRCODE_SUCC;
uint8_t value = atol((char*)argv[1]);
#ifdef FD230_650
- set_drag_limit(direction,value);
- uint8_t limit=get_drag_limit(direction);
- wstp_print("set drag %s limit %d (current limit %d) \r\n",direction==0?"x":"y",value,limit);
+ // set_drag_limit(direction,value);
+ // uint8_t limit=get_drag_limit(direction);
+ // wstp_print("set drag %s limit %d (current limit %d) \r\n",direction==0?"x":"y",value,limit);
#endif
return ERRCODE_SUCC;
#include "time.h"
#include "custom_utils.h"
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
#include "cywee_service.h"
#endif
#include "wearable_log.h"
#include "cat1_ctl.h"
#endif
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
extern void cywee_int1_callback(pin_t pin, uintptr_t param);
#endif
/**
{ HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
{ HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
{ HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6Öá Ö¸ÄÏÕë ÐÄÂÊ
+ { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6�� ָ���� ����
{ HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16 I2C2 SDA Sensor
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ ԤÁôÂí´ï¿ØÖÆ \°²ȫоƬ
+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ Ԥ��������� \��ȫоƬ
{ HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
{ HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
{ HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //ÔÝʱÎÞÓ㬲ÉÓÃVDDIO ĬÈÏ¿ªÆô EXt V3.0 EXt V1.8
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19 G_INT2 //ÔÝʱ²»ÓÃ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //��ʱ���ã�����VDDIO Ĭ�Ͽ��� EXt V3.0 EXt V1.8
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19 G_INT2 //��ʱ����
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçԴ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ���ʹ� NTC������Դ
#ifdef QSPI_DISPLAY
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
#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_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_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_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_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 »½ÐÑ À¶ÑÀ ,ÊäÈë
+ { 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 ���� ���� ,����
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST °²È«Ð¾Æ¬¸´Î»»½ÐѽÅ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ���ʵȵ�Դ���ƽ�
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST ��ȫоƬ��λ���ѽ�
#if VIB_USE_PWM
- // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
- // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
+ // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM ������ƽ� ����Ԥ������������λ��
+ // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM ������ƽ� ����Ԥ������������λ��
#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM ������ƽ� ����Ԥ������������λ��
#endif
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R3 NC
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT ÐÄÂÊÖжÏ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT �����ж�
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF ¹Øµô³äµç ζȸߵÄʱºò
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF �ص���� �¶ȸߵ�ʱ��
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
#if CORE == APPS
*/
-//ĬÈÏ¿ªÆôCat1 È»ºóÔÙ¸ù¾ÝÅäÖþö¶¨ÊÇ·ñ¹Ø±Õ.
-//ĬÈϲ»¿ªÆô ppg checkidʧ°Ü£¬ÔÒòδ֪£¬ÔÝʱ¿ª»ú¿ªÆôcat1
+//Ĭ�Ͽ���Cat1 Ȼ���ٸ������þ����Ƿ�ر�.
+//Ĭ�ϲ����� ppg checkidʧ�ܣ�ԭ��δ֪����ʱ��������cat1
#define DEFAULT_POWERON_CAT1 0
-//ÐèÒªÅäÖÃĬÈÏÊä³öµÄ£¬ÒÔ¼°ÐèÒªÅäÖÃĬÈÏÊäÈëÖжϺ¯ÊýµÄ¡£
+//��Ҫ����Ĭ������ģ��Լ���Ҫ����Ĭ�������жϺ����ġ�
const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
#if DEFAULT_POWERON_CAT1
// S_AGPIO_L13 SCLK_BT
{ S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L26 ÐÄÂʸ´λ PPG reset
+ // S_AGPIO_L26 ���ʸ�λ PPG reset
{ S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
+ // S_AGPIO_R0 PRG_LED_POWER ON ���ʵȵ�Դ���ƽ�
{ S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- //S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´ ,ĬÈϹرÕ
+ //S_AGPIO_L21 NTC_VDD_ON ���ʹ� NTC������Դ ,Ĭ�Ϲر�
{ S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#if 1 //ĬÈÏÕý³£³äµç
+#if 1 //Ĭ���������
// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c µÍµçÁ÷³äµç
+// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c �͵������
{ S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
{ S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
#else
{ S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
#endif
-//ĬÈϹرÕÂí´ï
+//Ĭ�Ϲر�����
{ S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-//ĬÈÏ¿ªÆô EXT LDO V3.0 V1.8
+//Ĭ�Ͽ��� EXT LDO V3.0 V1.8
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
/**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19*/
//{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback },
{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int1_callback },
// { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
#endif
- /**S_AGPIO_R1 GPO alipayĬÈÏresetpin*/
+ /**S_AGPIO_R1 GPO alipayĬ��resetpin*/
{ S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
#ifdef SUPPORT_CAT1_SERVICE
/**cat1 ring input key*/
#include "cat1_ctl.h"
#endif
-#ifdef ENABLE_CYWEE
+#ifdef SUPPORT_CYWEE_SERVICE
extern void cywee_int_callback(pin_t pin, uintptr_t param);
#endif
/**
{ HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
{ HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
{ HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6Öá Ö¸ÄÏÕë ÐÄÂÊ
+ { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6�� ָ���� ����
{ HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16 I2C2 SDA Sensor
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ ԤÁôÂí´ï¿ØÖÆ \°²ȫоƬ
+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ Ԥ��������� \��ȫоƬ
{ HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
{ HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
{ HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //ÔÝʱÎÞÓ㬲ÉÓÃVDDIO ĬÈÏ¿ªÆô EXt V3.0 EXt V1.8
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L19 G_INT2 //ÔÝʱ²»ÓÃ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //��ʱ���ã�����VDDIO Ĭ�Ͽ��� EXt V3.0 EXt V1.8
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L19 G_INT2 //��ʱ����
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçԴ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ���ʹ� NTC������Դ
#ifdef QSPI_DISPLAY
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
#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_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_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_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_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 »½ÐÑ À¶ÑÀ ,ÊäÈë
+ { 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 ���� ���� ,����
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST °²È«Ð¾Æ¬¸´Î»»½ÐѽÅ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ���ʵȵ�Դ���ƽ�
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST ��ȫоƬ��λ���ѽ�
// #if VIB_USE_PWM
- // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
- // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
+ // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM ������ƽ� ����Ԥ������������λ��
+ // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM ������ƽ� ����Ԥ������������λ��
// #else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM ������ƽ� ����Ԥ������������λ��
// #endif
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R3 NC
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT ÐÄÂÊÖжÏ
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT �����ж�
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF ¹Øµô³äµç ζȸߵÄʱºò
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF �ص���� �¶ȸߵ�ʱ��
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
#if CORE == APPS
*/
-//ĬÈÏ¿ªÆôCat1 È»ºóÔÙ¸ù¾ÝÅäÖþö¶¨ÊÇ·ñ¹Ø±Õ.
-//ĬÈϲ»¿ªÆô ppg checkidʧ°Ü£¬ÔÒòδ֪£¬ÔÝʱ¿ª»ú¿ªÆôcat1
+//Ĭ�Ͽ���Cat1 Ȼ���ٸ������þ����Ƿ�ر�.
+//Ĭ�ϲ����� ppg checkidʧ�ܣ�ԭ��δ֪����ʱ��������cat1
#define DEFAULT_POWERON_CAT1 0
-//ÐèÒªÅäÖÃĬÈÏÊä³öµÄ£¬ÒÔ¼°ÐèÒªÅäÖÃĬÈÏÊäÈëÖжϺ¯ÊýµÄ¡£
+//��Ҫ����Ĭ������ģ��Լ���Ҫ����Ĭ�������жϺ����ġ�
const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
#if DEFAULT_POWERON_CAT1
// S_AGPIO_L13 SCLK_BT
{ S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L26 ÐÄÂʸ´λ PPG reset
+ // S_AGPIO_L26 ���ʸ�λ PPG reset
{ S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
+ // S_AGPIO_R0 PRG_LED_POWER ON ���ʵȵ�Դ���ƽ�
{ S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- //S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´ ,ĬÈϹرÕ
+ //S_AGPIO_L21 NTC_VDD_ON ���ʹ� NTC������Դ ,Ĭ�Ϲر�
{ S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#if 1 //ĬÈÏÕý³£³äµç
+#if 1 //Ĭ���������
// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c µÍµçÁ÷³äµç
+// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c �͵������
{ S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
{ S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
#else
{ S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
#endif
-//ĬÈϹرÕÂí´ï
+//Ĭ�Ϲر�����
{ S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-//ĬÈÏ¿ªÆô EXT LDO V3.0 V1.8
+//Ĭ�Ͽ��� EXT LDO V3.0 V1.8
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef ENABLE_CYWEE
- /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 ²ÉÓÃtimer ʱÕâЩÖжÏÒªÆÁ±Î*/
+#ifdef SUPPORT_CYWEE_SERVICE
+ /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 ����timer ʱ��Щ�ж�Ҫ����*/
{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
//{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
#endif
- /**S_AGPIO_R1 GPO alipayĬÈÏresetpin*/
+ /**S_AGPIO_R1 GPO alipayĬ��resetpin*/
{ S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
#ifdef SUPPORT_CAT1_SERVICE
/**cat1 ring input key*/