{ S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
#endif
#endif
- // S_AGPIO_L17 HX3507_INT
- // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ // S_AGPIO_L17 PPG 3V3 EN
+ { S_AGPIO_L17, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
// S_AGPIO_L12 SDIO_BT
// { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
// S_AGPIO_L13 SCLK_BT
//默认开启 LCD 3V3 EN
{ S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+//1.8V EN
+ { S_AGPIO_L2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+
+
#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 },
#define HYN_INFO3(fmt, args...) if(hyn_data->log_level > 1)printf("[HYN]"fmt"\n", ##args)
#define HYN_INFO4(fmt, args...) if(hyn_data->log_level > 2)printf("[HYN]"fmt"\n", ##args)
#define HYN_ERROR(fmt, args...) printf("[HYN][Error]%s:"fmt"\n",__func__,##args)
-#define HYN_ENTER() printf("[HYN][enter]%s\n",__func__)
+#define HYN_ENTER()
#define HYN_POWER_ON_UPDATA (0) //touch fw updata
}
testSEChipScrollView->Add(chipinfo_label);
//if(custom_i2c_test()==ERRCODE_SUCC)
+#ifdef SUPPORT_ALIPAY_SEC
if(custom_exit_lpm() == ERRCODE_SUCC)
{
sprintf_s(buf,128,"Alipay IIC true\n");
{
sprintf_s(buf,128,"Alipay IIC false\n");
}
-
+
Config = {
.left = 33,
.top = 240,
return nullptr;
}
testSEChipScrollView->Add(IIC_label);
-
+#endif
//"efuse key active : 0"
//uint8_t ret= uapi_get_cywee_active_state();
if(uapi_get_cywee_active_state())
{VISON, "AboutTheWatchButton", "Verison", "AboutTheWatchButton_next", &testView::ChangeSystemAboutView, true},
{LCD, "LCDButton", "LCD", "LCDButton_next", &testView::ChangeLCDTESTView, true},
{TP, "TPButton", "TP", "TPButton_next", &testView::ChangeTPTESTView, true},
+#ifdef SUPPORT_MAG_SERVICE
{MAGETIC, "MAGETICButton", "Magetic", "MAGETICButton_next", &testView::ChangeMGTESTView, true},
+#endif
{LUMINANCE, "luminanceButton", "luminance", "luminanceButton_next", &testView::ChangLUMTESTView, true},
{CHARG, "chargingButton", "bat&charger", "chargingButton_next", &testView::ChangchargingTESTView, true},
{SPEAK, "speakButton", "speak", "speakButton_next", &testView::ChangspeakTESTView, true},
bool testView::ChangeMGTESTView(int16_t thisView)
{
+#ifdef SUPPORT_MAG_SERVICE
if (SystemScrollView[thisView] == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeMGTESTView");
SystemScrollView[thisView] = test_MG_view->testmagicInitIView(thisView);
group->Add(SystemScrollView[thisView]);
}
+#endif
return true;
}
test_TP_view = nullptr;
SystemScrollView[hideView] = nullptr;
break;
+#ifdef SUPPORT_MAG_SERVICE
case MAGETIC:
group->Remove(SystemScrollView[hideView]);
delete test_MG_view;
test_MG_view = nullptr;
SystemScrollView[hideView] = nullptr;
break;
+#endif
case LUMINANCE:
group->Remove(SystemScrollView[hideView]);
delete test_lum_view;
label_crown_error->SetText((std::string("表冠失败次数:") + std::to_string(aging_t.crown_error)).c_str());
label_gsensor_error->SetText((std::string("gsensor失败次数:") + std::to_string(aging_t.gsensor_error)).c_str());
label_ppg_error->SetText((std::string("ppg失败次数:" )+ std::to_string(aging_t.ppg_error)).c_str());
+#ifdef SUPPORT_MAG_SERVICE
label_mag_error->SetText((std::string("磁力计失败次数:") + std::to_string(aging_t.mag_error)).c_str());
+#endif
label_motor_error->SetText((std::string("马达失败次数:" )+ std::to_string(aging_t.motor_error)).c_str());
label_mic_error->SetText((std::string("麦克风失败次数:" )+ std::to_string(aging_t.mic_error)).c_str());
label_speaker_error->SetText((std::string("喇叭失败次数:") + std::to_string(aging_t.speaker_error)).c_str());
}
testoldScrollView->Add(label_ppg_error);
+#ifdef SUPPORT_MAG_SERVICE
Config = {
.left = 0,
.top = 1100,
return false;
}
testoldScrollView->Add(label_mag_error);
+#endif
Config = {
.left = 0,
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-11-10 13:46:36
+ * @LastEditTime: 2025-11-13 14:46:25
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
uapi_gpio_set_dir(GPIO_PIN_PRG_RESET, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(GPIO_PIN_PRG_RESET, GPIO_LEVEL_HIGH);
LOS_Mdelay(10);
+#ifndef BOARD_FD272
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(100);
+#endif
}
void ppg_power_off(void)
uapi_gpio_set_dir(GPIO_PIN_PRG_RESET, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(GPIO_PIN_PRG_RESET, GPIO_LEVEL_LOW);
LOS_Mdelay(10);
+#ifndef BOARD_FD272
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(100);
+#endif
}
uint8_t ppg_get_hrs(void)
custom_i2c_init(I2C_BUS_2);
- uapi_gpio_set_dir(POWER_3V3_PIN,GPIO_DIRECTION_OUTPUT);
- uapi_gpio_set_val(POWER_3V3_PIN,GPIO_LEVEL_HIGH);
+ // uapi_gpio_set_dir(POWER_3V3_PIN,GPIO_DIRECTION_OUTPUT);
+ // uapi_gpio_set_val(POWER_3V3_PIN,GPIO_LEVEL_HIGH);
// uapi_gpio_set_dir(INT_PIN,GPIO_DIRECTION_INPUT);
// uapi_pin_set_ie(INT_PIN,HAL_PIO_IE_ENBALE);
hx3508l_calibration();
#ifdef MOT_NO_USE_MODE // 如果是非中断模式, 初始后, 开启定时器;
- ots_timer_start();
+ // ots_timer_start();
#endif
-
- // uapi_pin_set_ie(INT_PIN,HAL_PIO_IE_ENBALE);
}
/**
* 停止OTS 的工作, 并进入power down, 功耗<4uA
{
#ifdef MOT_NO_USE_MODE
ots_timer_stop();
+ // uapi_pin_set_ie(INT_PIN,HAL_PIO_IE_DISABLE);
ots_result = 0;
ots_write_reg(RA_DEBUG_CAS0,0x20); //power down
//LOS_Mdelay(20);
{
ots_init();
ots_start(); // 启动定时器
+ ots_timer_start();
}
#else //其他平台,由用户自行添加上面对应的程序
#include "i2c.h"
#include "debug_print.h"
#include "hal_i2c.h"
+#include "hal_gpio.h"
+#include "pinctrl_porting.h"
+
+#define INT_PIN S_AGPIO_R3
static uint8_t g_hx3508_test_started = 0;
encoder_callback g_encoder_callback = NULL;
}
ots_init();
ots_start();
+ uapi_pin_set_ie(INT_PIN,HAL_PIO_IE_ENBALE);
g_hx3508_test_started = 1;
return ERRCODE_SUCC;
}
return 0;
}
ots_stop();
+ uapi_pin_set_ie(INT_PIN,HAL_PIO_IE_DISABLE);
g_hx3508_test_started = 0 ;
return ERRCODE_SUCC;
}
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-11-13 11:44:44\r
+ * @LastEditTime: 2025-11-13 16:23:13\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
aging_t.charge_error++;\r
aging_t.fail_num++;\r
}\r
+\r
+#ifdef ENABLE_HP4570\r
+ uint8_t charge_id = hp4570_get_id();\r
+ if (charge_id != 0x2)\r
+ {\r
+ aging_t.charge_error++;\r
+ aging_t.fail_num++;\r
+ }\r
+\r
+#endif\r
PRINT("充电 失败次数 : %d \r\n",aging_t.charge_error);\r
/********************* 马达 老化测试*****************************/\r
//2min 震2s 停2s\r
PRINT("马达失败次数 : %d \r\n",aging_t.motor_error);\r
\r
/********************* mic 老化测试*****************************/\r
- ret = uapi_microhone_switch(1);\r
- LOS_Msleep(2000 * 60);\r
- ret = uapi_microhone_switch(0);\r
- if(ret != 0)\r
- {\r
- aging_t.mic_error++;\r
- aging_t.fail_num++;\r
- }\r
- PRINT("mic失败次数 : %d \r\n",aging_t.mic_error);\r
- uapi_delete_files("/user/userdata/microphone.mp3");\r
+ // ret = uapi_microhone_switch(1);\r
+ // LOS_Msleep(2000 * 60);\r
+ // ret = uapi_microhone_switch(0);\r
+ // if(ret != 0)\r
+ // {\r
+ // aging_t.mic_error++;\r
+ // aging_t.fail_num++;\r
+ // }\r
+ // PRINT("mic失败次数 : %d \r\n",aging_t.mic_error);\r
+ // uapi_delete_files("/user/userdata/microphone.mp3");\r
/********************* spk 老化测试*****************************/\r
total_time = 2 * 60;\r
enter_time = 0;\r
do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_AGING_DATA_SAVE, NULL, 0);\r
return;\r
}\r
+\r
+ int32_t ret = custom_play_audio("user/music/factory/1khz.mp3",100);\r
+ if (ret != 0) \r
+ {\r
+ aging_t.speaker_error++;\r
+ aging_t.fail_num++;\r
+\r
+ }\r
+\r
+ const char *defaultArgs[6] = {"01", "mp3", "16000", "1", "16", "user/userdata/1.mp3"};\r
+\r
+ ret = AudioCaptureSample(6, defaultArgs);\r
+ if (ret != 0) \r
+ {\r
+ aging_t.mic_error++;\r
+ aging_t.fail_num++;\r
+ }\r
+\r
+ LOS_Msleep(3000);\r
+\r
+ int32_t argc = 1;\r
+ uint8_t *argv = (uint8_t*)"stop";\r
+ AudioCaptureSample(argc, (const char **)&argv);\r
+ LOS_Msleep(500);\r
+ custom_stop_play_audio();\r
+\r
+ LOS_Msleep(1000);\r
+\r
+ ret = custom_play_audio("user/userdata/1.mp3",100);\r
+ if (ret != 0) \r
+ {\r
+ aging_t.speaker_error++;\r
+ aging_t.fail_num++;\r
+ }\r
+\r
+ LOS_Msleep(3000);\r
+\r
+ custom_stop_play_audio();\r
+\r
+ uapi_delete_files("user/userdata/1.mp3");\r
+ LOS_Msleep(1000);\r
uapi_get_timestampe_ss(¤t_time);\r
- uapi_check_spk(1);\r
- LOS_Msleep(2000);\r
- uapi_check_spk(0);\r
- aging_t.speaker_error = 0;\r
+ // uapi_check_spk(1);\r
+ // LOS_Msleep(2000);\r
+ // uapi_check_spk(0);\r
+ // aging_t.speaker_error = 0;\r
// PRINT("current_time - enter_time[%d]\n",current_time - enter_time);\r
}while(current_time - enter_time <= 2 * 60);\r
+ PRINT("mic失败次数 : %d \r\n",aging_t.mic_error);\r
PRINT("spk失败次数 : %d \r\n",aging_t.speaker_error);\r
/*********************ppg 老化测试*****************************/\r
\r
PRINT("gsensor失败次数 : %d \r\n",aging_t.gsensor_error);\r
\r
/*********************磁力计 老化测试*****************************/\r
+#ifdef SUPPORT_MAG_SERVICE\r
float fAzimuth,fPitch,fRoll;\r
\r
total_time = 2 * 60;\r
return;\r
}\r
uapi_get_timestampe_ss(¤t_time);\r
-#ifdef SUPPORT_MAG_SERVICE\r
+\r
do_mag_service_check_msg(MAG_SERVICE_CMD_START_CHECK);\r
LOS_Msleep(1000);\r
\r
mag_get_fAzimuth(&fAzimuth);\r
\r
do_mag_service_check_msg(MAG_SERVICE_CMD_STOP_CHECK);\r
-#endif\r
+\r
if(fAzimuth < 0)\r
{\r
aging_t.mag_error++;\r
}while(current_time - enter_time <= 2 * 60);\r
\r
PRINT("磁力计失败次数 : %d \r\n",aging_t.mag_error);\r
-\r
+#endif\r
uapi_get_timestampe_ss(¤t_aging_time);\r
if(current_aging_time - enter_aging_time > aging_t.target_time)\r
{\r
uint32_t speaker_error; //spk失败次数
uint32_t mic_error; //mic失败次数
uint32_t motor_error; //马达失败次数
+#ifdef SUPPORT_MAG_SERVICE
uint32_t mag_error; //磁力计失败次数
+#endif
uint32_t ppg_error; //ppg失败次数
uint32_t gsensor_error; //gsensor失败次数
uint32_t crown_error; //表冠失败次数