pm.low_noise = 1;\r
lis2doc_power_mode_set(&dev_ctx, pm);\r
\r
+ //lis2doc_power_mode_set(&dev_ctx, LIS2DOC_CONT_LOW_PWR_LOW_NOISE_12bit);\r
+ /* Set Output Data Rate */\r
+ // lis2doc_data_rate_set(&dev_ctx, LIS2DOC_XL_ODR_25Hz);\r
+ \r
lis2doc_data_rate_set(&dev_ctx, LIS2DOC_XL_SET_SW_TRIG);\r
return ERRCODE_SUCC;\r
}\r
uint8_t val = uapi_gpio_get_val(G_INT1_PIN);\r
uint8_t val2 = uapi_gpio_get_val(G_INT2_PIN);\r
// PRINT("G_INT1_PIN %u,G_INT2_PIN %u \r\n",val,val2);\r
- if( val == 0 || val2 == 0)\r
+ // if( val == 0 || val2 == 0)\r
{\r
/* Read acceleration data */\r
memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));\r
if("MAG_MMC5603" IN_LIST DEFINES)
set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/Customer.c
+ ${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
)
else()
set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/mmc5603/Customer.c
+ ${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
*/\r
\r
#include "MMC5603.h"\r
-#include "Customer.h"\r
-\r
+#include "mmc_customer.h"\r
#include "math.h"\r
\r
/* Indicate working mode of sensor */\r
mag_out[1] = ((float)data_temp[1] - MMC5603_16BIT_OFFSET)/MMC5603_16BIT_SENSITIVITY;\r
mag_out[2] = ((float)data_temp[2] - MMC5603_16BIT_OFFSET)/MMC5603_16BIT_SENSITIVITY;\r
\r
- mag_out[0] = get_filter_data_x(mag_out[0]);\r
- mag_out[1] = get_filter_data_y(mag_out[1]);\r
- mag_out[2] = get_filter_data_z(mag_out[2]);\r
- filter_index_plus();\r
+ // mag_out[0] = get_filter_data_x(mag_out[0]);\r
+ // mag_out[1] = get_filter_data_y(mag_out[1]);\r
+ // mag_out[2] = get_filter_data_z(mag_out[2]);\r
+ // filter_index_plus();\r
\r
MMC5603_Auto_Switch(data_temp); \r
\r
#include "at_cmd_api.h"
#include "pm_control.h"
#include "MMC5603.h"
-#include "Customer.h"
+#include "mmc_customer.h"
#include "mag_service.h"
#define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
\r
#include "MemsicAlgo.h"\r
#include "MemsicCompass.h"\r
-#include "Customer.h"\r
+#include "mmc_customer.h"\r
#include "MMC5603.h" \r
\r
#ifdef ACC_LIS2DOC\r
#include "acc_service.h"\r
#endif\r
+\r
+#include "time.h"\r
+\r
float magnetic_field_x;\r
float magnetic_field_y;\r
float magnetic_field_z;\r
return 0;\r
#endif\r
int i;\r
+ static uint32_t MILLISEC_TO_NANOSEC = 1000000;\r
+ static uint16_t SEC_TO_MILLISEC = 1000;\r
+ struct timespec time;\r
+ clock_gettime(CLOCK_MONOTONIC, &time);\r
+ uint32_t _startTimestamp = (uint32_t ) time.tv_sec * SEC_TO_MILLISEC + time.tv_nsec / MILLISEC_TO_NANOSEC;\r
+ \r
\r
/* This variable is used to store the accelerometer and magnetometer raw data.\r
* please NOTE that the data is going to store here MUST has been transmitted \r
float caliMagPara[4] = {0.0f}; \r
/* convert the coordinate system */ \r
acc_coordinate_raw_to_real(A_LAYOUT, acc_raw_data, acc_real_data); \r
- \r
+ MMC_LOG("acc_coordinate_raw_to_real raw(%.02f,%.02f,%.02f) , real(%.02f,%.02f,%.02f)\r\n",\r
+ acc_raw_data[0],acc_raw_data[1],acc_raw_data[2],\r
+ acc_real_data[0],acc_real_data[1],acc_real_data[2]\r
+ ); \r
/* Get the MMC5603 mag raw data, unit is gauss */\r
MMC5603_GetData(mag_raw_data);\r
\r
/* Convert the coordinate system */ \r
- mag_coordinate_raw_to_real(M_LAYOUT, mag_raw_data, mag_real_data); \r
+ mag_coordinate_raw_to_real(M_LAYOUT, mag_raw_data, mag_real_data); \r
+ MMC_LOG("mag_coordinate_raw_to_real raw(%.02f,%.02f,%.02f) , real(%.02f,%.02f,%.02f)\r\n",\r
+ mag_raw_data[0],mag_raw_data[1],mag_raw_data[2],\r
+ mag_real_data[0],mag_real_data[1],mag_real_data[2]\r
+ ); \r
\r
/* Below functions are algorithm interface. \r
* input acc, mag data into algorithm\r
fPitch = caliOri[1];\r
fRoll = caliOri[2]; \r
if(iAccuracy == 3){\r
- PRINT("== Mag x %.02F,y %.02F , z %.02F\r\n",\r
+ MMC_LOG("== Mag x %.02F,y %.02F , z %.02F\r\n",\r
calMagX,//高斯X\r
calMagY,//高斯Y\r
calMagZ//高斯Z\r
);\r
- PRINT("iAccuracy %d== Acc Azimuth %.02F,Pitch %.02F , Roll %.02F\r\n", \r
+ MMC_LOG("iAccuracy %d== Acc Azimuth %.02F,Pitch %.02F , Roll %.02F\r\n", \r
iAccuracy,//可信度\r
fAzimuth, //水平方向角,左转右转\r
fPitch,//上下俯仰角\r
fRoll//左右翻滚角\r
);\r
}else{\r
- PRINT("iAccuracy %d < 3 skip\r\n", \r
+ MMC_LOG("--iAccuracy %d < 3 skip\r\n", \r
iAccuracy //可信度\r
);\r
+\r
+ MMC_LOG("--== Mag x %.02F,y %.02F , z %.02F\r\n",\r
+ calMagX,//高斯X\r
+ calMagY,//高斯Y\r
+ calMagZ//高斯Z\r
+ );\r
+ MMC_LOG("--iAccuracy %d== Acc Azimuth %.02F,Pitch %.02F , Roll %.02F\r\n", \r
+ iAccuracy,//可信度\r
+ fAzimuth, //水平方向角,左转右转\r
+ fPitch,//上下俯仰角\r
+ fRoll//左右翻滚角\r
+ );\r
\r
}\r
}\r
if(GetMagSaturation()) \r
{\r
//MEMSIC_Magnetic_Sensor_SET(); //Do SET action\r
- PRINT("Do SET action MMC5603_SET\r\n");\r
+ MMC_LOG("Do SET action MMC5603_SET\r\n");\r
MMC5603_SET();\r
}\r
\r
/* Save the calpara buffer into the system file */\r
/* This function should be create by customer.If customer can not implement this function, should comment it out */ \r
SavePara(saveData); \r
- PRINT("save para \r\n"); \r
+ MMC_LOG("save para \r\n"); \r
}\r
\r
/* Sampling interval is 20ms. */\r
// mmc5603_Delay_Ms(20);\r
+\r
+ clock_gettime(CLOCK_MONOTONIC, &time);\r
+ uint32_t _endTimestamp = (uint32_t ) time.tv_sec * SEC_TO_MILLISEC + time.tv_nsec / MILLISEC_TO_NANOSEC;\r
\r
+ MMC_LOG("mmc5603_check cost %u\r\n",(_endTimestamp-_startTimestamp));\r
return 0;\r
}\r
\r
{\r
switch (layout) {\r
case 0:\r
- out[0] = in[0];\r
+ out[0] = -in[0];\r
out[1] = in[1];\r
out[2] = in[2];\r
break;\r
break;\r
case 5:\r
out[0] = -in[0];\r
- out[1] = in[1];\r
+ out[1] = -in[1];\r
out[2] = -in[2];\r
break;\r
case 6:\r
-#include "Customer.h"\r
+#include "mmc_customer.h"\r
#include "osal_timer.h"\r
#include "osal_mutex.h"\r
#include "pinctrl.h"\r
#include <stdio.h>\r
#include "debug_print.h"\r
\r
+\r
+#ifndef XTS_SUPPORT\r
#define MMC_DEBUG\r
+#endif \r
\r
#ifdef MMC_DEBUG\r
#define MMC_LOG(fmt, ...) \\r
#include "mmc5603_hal.h"
#include "mag_service.h"
+#include "mmc_customer.h"
/***
* 其他cmd在Header里定义,对外开放
osTimerId_t g_mag_service_timer = NULL;
static bool g_bat_timer_is_running = false;
-#define MAG_CHECK_MS 200
+#define MAG_CHECK_MS 20
static unsigned long g_app_queue;
static bool mag_service_running_stat = false;
ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
sizeof(common_notify_mail_t), 0);
if (ret != OSAL_SUCCESS) {
- PRINT("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+ MMC_ERROR("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();
// mmc5603_check();
- PRINT("MAG_SERVICE_CMD_TIMER_CHECK\r\n");
+ MMC_LOG("MAG_SERVICE_CMD_TIMER_CHECK\r\n");
}else if (mail.comm.app == MAG_SERVICE_CMD_START_CHECK){
- mag_service_running_stat = true;
mmc5603_start();
+ uapi_tcxo_delay_ms(20);
+ mag_service_running_stat = true;
+ // uapi_pm_add_sleep_veto(PM_ID_SCREEN);
mag_service_timer_start_check(MAG_CHECK_MS);
}else if (mail.comm.app == MAG_SERVICE_CMD_STOP_CHECK){
mag_service_running_stat = false;
osTimerStop(g_mag_service_timer);
mmc5603_stop();
+ uapi_tcxo_delay_ms(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) {
- PRINT("[mag][service] app create mail fail\n");
+ MMC_ERROR("[mag][service] app create mail fail\n");
return ERRCODE_FAIL;
}
"mag_service_service", APP_BOARD_TASK_SIZE);
if (task_handle == NULL) {
osal_msg_queue_is_full(g_app_queue);
- PRINT("create mag service thread fail!\r\n");
+ MMC_ERROR("create mag service thread fail!\r\n");
return ERRCODE_FAIL;
}
- // osal_kthread_set_priority(task_handle, APP_BOARD_TASK_PRIO);
- osal_kthread_set_priority(task_handle, 10);
+ osal_kthread_set_priority(task_handle, APP_BOARD_TASK_PRIO);
+ // osal_kthread_set_priority(task_handle, 10);
g_mag_service_timer = osTimerNew((osTimerFunc_t)mag_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
// void mag_service_service_resume(void)
// {
-// PRINT("mag_service_service resume!\r\n");
+// MMC_LOG("mag_service_service resume!\r\n");
// mag_service_check_timer_callback(0);
// }
// void mag_service_service_suspend(void)
// {
-// PRINT("mag_service_service suspend!\r\n");
+// MMC_LOG("mag_service_service suspend!\r\n");
// }
\ No newline at end of file