/*******************************************************************************
|
* 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;
|
|
/* 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_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);
|
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;
|
}
|