¶Ô±ÈÐÂÎļþ |
| | |
| | | /******************************************************************************* |
| | | * File Name : Module.c |
| | | * Description : |
| | | * Created on : 2018å¹´8æ5æ¥ |
| | | * Author : www.hido-studio.com |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Include Files * |
| | | *******************************************************************************/ |
| | | #include "Module.h" |
| | | #include "string.h" |
| | | #include "HIDO_Util.h" |
| | | |
| | | /******************************************************************************* |
| | | * Macro * |
| | | *******************************************************************************/ |
| | | #define FUNC_CALL(fn, ...) \ |
| | | if((fn) != HIDO_NULL) \ |
| | | (fn)(__VA_ARGS__) |
| | | |
| | | /******************************************************************************* |
| | | * Type Definition * |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Local Variable * |
| | | *******************************************************************************/ |
| | | static HIDO_CHAR l_acIMEI[MODULE_IMEI_SIZE]; |
| | | static HIDO_CHAR l_acIMSI[MODULE_IMSI_SIZE]; |
| | | static HIDO_CHAR l_acCCID[MODULE_CCID_SIZE]; |
| | | |
| | | /* CSQ */ |
| | | static HIDO_UINT32 l_u32SignalIntensity = 0; |
| | | static HIDO_VOID *l_pSignalIntensityArg = HIDO_NULL; |
| | | static FN_SignalIntensityCallback l_fnSignalIntensityCallback = HIDO_NULL; |
| | | static HIDO_BOOL l_bSignalIntensityNeedRequest = HIDO_FALSE; |
| | | |
| | | /* LBS */ |
| | | static ST_LBSLocation l_stLBSLocation; |
| | | static HIDO_VOID *l_pLBSLocationArg = HIDO_NULL; |
| | | static FN_LBSLocationCallback l_fnLBSLocationCallback = HIDO_NULL; |
| | | static HIDO_BOOL l_bLBSLocationNeedRequest = HIDO_FALSE; |
| | | |
| | | /* Power */ |
| | | static FN_PowerEventCallback l_fnPowerEventCallback = HIDO_NULL; |
| | | static HIDO_VOID *l_pPowerEventArg = HIDO_NULL; |
| | | static HIDO_BOOL l_abModuleNeedSleep[MODULE_ALL] = { HIDO_FALSE }; |
| | | static HIDO_BOOL l_abModuleNeedWakeUp[MODULE_ALL] = { HIDO_FALSE }; |
| | | |
| | | static HIDO_BOOL l_abModuleNeedPowerOff[MODULE_ALL] = { HIDO_FALSE }; |
| | | static HIDO_BOOL l_abModuleNeedPowerOn[MODULE_ALL] = { HIDO_FALSE }; |
| | | |
| | | static HIDO_BOOL l_bRunATCmd = HIDO_FALSE; |
| | | static HIDO_CHAR l_acRunATCmdBuff[128]; |
| | | |
| | | /******************************************************************************* |
| | | * Local Function Declaration * |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Local Function * |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Global Function * |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_SignalIntensityResult |
| | | * Description : ä¿¡å·å¼ºåº¦å¼æ¥ç»æéç¥ |
| | | * Input : _u32SignalIntensity ä¿¡å·å¼ºåº¦ |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_SignalIntensityResult(HIDO_UINT32 _u32SignalIntensity) |
| | | { |
| | | if(l_fnSignalIntensityCallback != HIDO_NULL) |
| | | { |
| | | l_fnSignalIntensityCallback(_u32SignalIntensity, l_pSignalIntensityArg); |
| | | } |
| | | |
| | | l_u32SignalIntensity = _u32SignalIntensity; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetSignalIntensityAsync |
| | | * Description : ä¿¡å·å¼ºåº¦å¼æ¥è·å |
| | | * Input : _fnGetSignalIntensity 弿¥éç¥åè° |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_GetSignalIntensityAsync(FN_SignalIntensityCallback _fnGetSignalIntensity, HIDO_VOID *_pArg) |
| | | { |
| | | l_fnSignalIntensityCallback = _fnGetSignalIntensity; |
| | | l_pSignalIntensityArg = _pArg; |
| | | l_bSignalIntensityNeedRequest = HIDO_TRUE; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_SignalIntensityNeedRequest |
| | | * Description : æ¯å¦éè¦å¼æ¥è·åä¿¡å·å¼ºåº¦ |
| | | * Input : None |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_SignalIntensityNeedRequest(void) |
| | | { |
| | | HIDO_BOOL bState = l_bSignalIntensityNeedRequest; |
| | | |
| | | l_bSignalIntensityNeedRequest = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_LBSLocationResult |
| | | * Description : |
| | | * Input : _u32SignalIntensity ä¿¡å·å¼ºåº¦ |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_LBSLocationResult(ST_LBSLocation *_pstLBSLocation) |
| | | { |
| | | if(l_fnLBSLocationCallback != HIDO_NULL) |
| | | { |
| | | l_fnLBSLocationCallback(_pstLBSLocation, l_pLBSLocationArg); |
| | | } |
| | | |
| | | memcpy(&l_stLBSLocation, _pstLBSLocation, sizeof(ST_LBSLocation)); |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetLBSLocationAsync |
| | | * Description : |
| | | * Input : _fnGetSignalIntensity 弿¥éç¥åè° |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_GetLBSLocationAsync(FN_LBSLocationCallback _fnGetLBSLocation, HIDO_VOID *_pArg) |
| | | { |
| | | l_fnLBSLocationCallback = _fnGetLBSLocation; |
| | | l_pLBSLocationArg = _pArg; |
| | | l_bLBSLocationNeedRequest = HIDO_TRUE; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_LBSLocationNeedRequest |
| | | * Description : |
| | | * Input : None |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_LBSLocationNeedRequest(void) |
| | | { |
| | | HIDO_BOOL bState = l_bLBSLocationNeedRequest; |
| | | |
| | | l_bLBSLocationNeedRequest = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetIMEI |
| | | * Description : è·åIMEIæ¥å£ |
| | | * Input : None |
| | | * Output : _acIMEI IMEI |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_CHAR *Module_GetIMEI(HIDO_VOID) |
| | | { |
| | | return l_acIMEI; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_SetIMEI |
| | | * Description : 设置IMEIæ¥å£ |
| | | * Input : _pcIMEI IMEI |
| | | * _u32IMEILen é¿åº¦ |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_SetIMEI(HIDO_CHAR *_pcIMEI, HIDO_UINT32 _u32IMEILen) |
| | | { |
| | | if(_u32IMEILen < 2) |
| | | { |
| | | return HIDO_ERR; |
| | | } |
| | | |
| | | _u32IMEILen -= 2; |
| | | |
| | | if(_u32IMEILen < MODULE_IMEI_SIZE) |
| | | { |
| | | memcpy(l_acIMEI, _pcIMEI, _u32IMEILen); |
| | | l_acIMEI[_u32IMEILen] = '\0'; |
| | | } |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetIMSI |
| | | * Description : 设置IMEIæ¥å£ |
| | | * Input : _pcIMSI IMSI |
| | | * _u32IMSILen é¿åº¦ |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_CHAR *Module_GetIMSI(HIDO_VOID) |
| | | { |
| | | return l_acIMSI; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_SetIMSI |
| | | * Description : 设置IMSIæ¥å£ |
| | | * Input : _pcIMSI IMSI |
| | | * _u32IMSILen é¿åº¦ |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_SetIMSI(HIDO_CHAR *_pcIMSI, HIDO_UINT32 _u32IMSILen) |
| | | { |
| | | if(_u32IMSILen < 2) |
| | | { |
| | | return HIDO_ERR; |
| | | } |
| | | |
| | | _u32IMSILen -= 2; |
| | | |
| | | if(_u32IMSILen < MODULE_IMSI_SIZE) |
| | | { |
| | | memcpy(l_acIMSI, _pcIMSI, _u32IMSILen); |
| | | l_acIMSI[_u32IMSILen] = '\0'; |
| | | } |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetCCID |
| | | * Description : è·åSIMå¡å· |
| | | * Input : None |
| | | * Output : None |
| | | * Return : SIMå¡å· |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_CHAR *Module_GetCCID(HIDO_VOID) |
| | | { |
| | | return l_acCCID; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_SetCCID |
| | | * Description : 设置IMSIæ¥å£ |
| | | * Input : _pcIMSI IMSI |
| | | * _u32IMSILen é¿åº¦ |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_SetCCID(HIDO_CHAR *_pcCCID, HIDO_UINT32 _u32CCIDLen) |
| | | { |
| | | if(_u32CCIDLen < MODULE_CCID_SIZE) |
| | | { |
| | | memcpy(l_acCCID, _pcCCID, _u32CCIDLen-2); |
| | | // l_acCCID[_u32CCIDLen] = '\0'; |
| | | } |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_Sleep |
| | | * Description : ç¡ç æ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_SetPowerEventCallback(FN_PowerEventCallback _fnPowerCallback, HIDO_VOID *_pArg) |
| | | { |
| | | l_fnPowerEventCallback = _fnPowerCallback; |
| | | l_pPowerEventArg = _pArg; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_Sleep |
| | | * Description : ç¡ç æ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_Sleep(E_Module _eModule) |
| | | { |
| | | l_abModuleNeedSleep[_eModule] = HIDO_TRUE; |
| | | l_abModuleNeedWakeUp[_eModule] = HIDO_FALSE; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_WakeUp |
| | | * Description : å¤éæ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_WakeUp(E_Module _eModule) |
| | | { |
| | | l_abModuleNeedWakeUp[_eModule] = HIDO_TRUE; |
| | | l_abModuleNeedSleep[_eModule] = HIDO_FALSE; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_PowerEvent |
| | | * Description : |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_PowerEvent(E_Module _eModule, E_ModuleState _eModuleState) |
| | | { |
| | | FUNC_CALL(l_fnPowerEventCallback, _eModule, _eModuleState, l_pPowerEventArg); |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_PowerOff |
| | | * Description : å
³æºæ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_PowerOff(E_Module _eModule) |
| | | { |
| | | l_abModuleNeedPowerOff[_eModule] = HIDO_TRUE; |
| | | l_abModuleNeedPowerOn[_eModule] = HIDO_FALSE; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_PowerOn |
| | | * Description : 弿ºæ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_PowerOn(E_Module _eModule) |
| | | { |
| | | l_abModuleNeedPowerOn[_eModule] = HIDO_TRUE; |
| | | l_abModuleNeedPowerOff[_eModule] = HIDO_FALSE; |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_NeedSleep |
| | | * Description : ç¡ç æ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_NeedSleep(E_Module _eModule) |
| | | { |
| | | HIDO_BOOL bState = l_abModuleNeedSleep[_eModule]; |
| | | |
| | | l_abModuleNeedSleep[_eModule] = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_WakeUp |
| | | * Description : å¤éæ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_NeedWakeUp(E_Module _eModule) |
| | | { |
| | | HIDO_BOOL bState = l_abModuleNeedWakeUp[_eModule]; |
| | | |
| | | l_abModuleNeedWakeUp[_eModule] = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_PowerOff |
| | | * Description : å
³æºæ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_NeedPowerOff(E_Module _eModule) |
| | | { |
| | | HIDO_BOOL bState = l_abModuleNeedPowerOff[_eModule]; |
| | | |
| | | l_abModuleNeedPowerOff[_eModule] = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_PowerOn |
| | | * Description : 弿ºæ¥å£ |
| | | * Input : |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_NeedPowerOn(E_Module _eModule) |
| | | { |
| | | HIDO_BOOL bState = l_abModuleNeedPowerOn[_eModule]; |
| | | |
| | | l_abModuleNeedPowerOn[_eModule] = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetSignalIntensity |
| | | * Description : è·åæå䏿¬¡ç¼åçä¿¡å·é度 |
| | | * Input : None |
| | | * Output : None |
| | | * Return : ä¿¡å·å¼ºåº¦ |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_UINT32 Module_GetSignalIntensity(void) |
| | | { |
| | | return l_u32SignalIntensity; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_RunATCmdResult |
| | | * Description : ç¨æ·ATå½ä»¤è¿è¡ç»æ |
| | | * Input : None |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_RunATCmdResult(HIDO_DataStruct * _pstATResponse) |
| | | { |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_RunATCmdEnable |
| | | * Description : 夿æ¯å¦éè¦ç¨æ·çATå½ä»¤ |
| | | * Input : None |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_BOOL Module_RunATCmdEnable(HIDO_VOID) |
| | | { |
| | | HIDO_BOOL bState = l_bRunATCmd; |
| | | |
| | | l_bRunATCmd = HIDO_FALSE; |
| | | |
| | | return bState; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_GetRunATCmd |
| | | * Description : è·åç¨æ·è¿è¡çATå½ä»¤ |
| | | * Input : None |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_CHAR *Module_GetRunATCmd(HIDO_VOID) |
| | | { |
| | | return l_acRunATCmdBuff; |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : Module_RunATCmd |
| | | * Description : ç¨æ·è¿è¡ATå½ä»¤ |
| | | * Input : None |
| | | * Output : None |
| | | * Return : None |
| | | * Author : www.hido-studio.com |
| | | * Modified Date: : 2018å¹´8æ5æ¥ |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Module_RunATCmd(HIDO_CHAR *_pcATCmd) |
| | | { |
| | | if(HIDO_NULL == _pcATCmd) |
| | | { |
| | | return HIDO_ERR; |
| | | } |
| | | |
| | | l_bRunATCmd = HIDO_TRUE; |
| | | HIDO_UtilSnprintf(l_acRunATCmdBuff, sizeof(l_acRunATCmdBuff), _pcATCmd); |
| | | |
| | | return HIDO_OK; |
| | | } |