?? sim.c
字號:
return(res);
}
/*
* SIM_Invalidate
*
* Invalidate the current EF
*/
SYS_UWORD16 SIM_Invalidate(SYS_UWORD8 *rP, SYS_UWORD8 *lP)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_INVALIDATE;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = 0;
res = SIM_Command(p, 0, rP, lP);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"ALCMD", 5);
SIM_dbg_write_trace(p->xbuf, 5);
SIM_dbg_write_trace((SYS_UWORD8 *)"ALANS", 5);
SIM_dbg_write_trace(lP, 1);
SIM_dbg_write_trace(rP, *lP);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_Rehabilitate
*
* Rehabilitate the current EF
*/
SYS_UWORD16 SIM_Rehabilitate(SYS_UWORD8 *rP, SYS_UWORD8 *lP)
{
SIM_PORT *p;
int len;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_REHABILITATE;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = 0;
res = SIM_Command(p, 0, rP, lP);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"AMCMD", 5);
SIM_dbg_write_trace(p->xbuf, 5);
SIM_dbg_write_trace((SYS_UWORD8 *)"AMANS", 5);
SIM_dbg_write_trace(lP, 1);
SIM_dbg_write_trace(rP, *lP);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_UpdateBinary
*
* Store data in the current transparent EF
*/
SYS_UWORD16 SIM_UpdateBinary(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_UPDATE_BINARY;
p->xbuf[2] = offset >> 8;
p->xbuf[3] = offset & 0xFF;
p->xbuf[4] = len;
for (i=0;i<len;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"ANCMD", 5);
SIM_dbg_write_trace(p->xbuf, len+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"ANANS", 5);
SIM_dbg_write_trace(rcvSize, 1);
SIM_dbg_write_trace(result, *rcvSize);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_ReadRecord
*
* Read a record (recNum) from the current linear fixed or cyclic EF
*/
SYS_UWORD16 SIM_ReadRecord(SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_READ_RECORD;
p->xbuf[2] = recNum;
p->xbuf[3] = mode;
p->xbuf[4] = len;
res = SIM_Command(p, 0, dat, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"AOCMD", 5);
SIM_dbg_write_trace(p->xbuf, len+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"AOANS", 5);
SIM_dbg_write_trace(rcvSize, 1);
SIM_dbg_write_trace(dat, *rcvSize);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_UpdateRecord
*
* Store a record (recNum) in the current linear fixed or cyclic EF
*/
SYS_UWORD16 SIM_UpdateRecord(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_UPDATE_RECORD;
p->xbuf[2] = recNum;
p->xbuf[3] = mode;
p->xbuf[4] = len;
for (i=0;i<len;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"APCMD", 5);
SIM_dbg_write_trace(p->xbuf, len+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"APANS", 5);
SIM_dbg_write_trace(rcvSize, 1);
SIM_dbg_write_trace(result, *rcvSize);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_Seek
*
* Search data in a linear fixed or cyclic EF.
* return the first record number in which it found the data.
*/
SYS_UWORD16 SIM_Seek(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_SEEK;
p->xbuf[2] = 0;
p->xbuf[3] = mode;
p->xbuf[4] = len;
for (i=0;i<len;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"AQCMD", 5);
SIM_dbg_write_trace(p->xbuf, len+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"AQANS", 5);
SIM_dbg_write_trace(rcvSize, 1);
SIM_dbg_write_trace(result, *rcvSize);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_Increase
*
* Add value to a record of a cyclic EF
*/
SYS_UWORD16 SIM_Increase(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int len;
int i;
int res;
p = &(Sim[0]);
len = 3;
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_INCREASE;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = 3;
for (i=0;i<3;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"ARCMD", 5);
SIM_dbg_write_trace(p->xbuf, 3+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"ARANS", 5);
SIM_dbg_write_trace(rcvSize, 1);
SIM_dbg_write_trace(result, *rcvSize);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_TerminalProfile
*
* Used by ME to send its toolkit capabilities to SIM
*/
SYS_UWORD16 SIM_TerminalProfile(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_TERMINAL_PROFILE;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = len;
for (i=0;i<len;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"ASCMD", 5);
SIM_dbg_write_trace(p->xbuf, len+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"ASANS", 5);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_FETCH
*
* Used by ME to inquiry of what SIM toolkit need to do
*/
SYS_UWORD16 SIM_Fetch(SYS_UWORD8 *result, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_FETCH;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = len;
res = SIM_Command(p, 0, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"ATCMD", 5);
SIM_dbg_write_trace(p->xbuf, 5);
SIM_dbg_write_trace((SYS_UWORD8 *)"ATANS", 5);
SIM_dbg_write_trace(rcvSize, 1);
SIM_dbg_write_trace(result, *rcvSize);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_TerminalResponse *
* Used for ME to respond at a SIM toolkit command
*/
SYS_UWORD16 SIM_TerminalResponse(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_TERMINAL_RESPONSE;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = len;
for (i=0;i<len;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
SIM_dbg_write_trace((SYS_UWORD8 *)"AUCMD", 5);
SIM_dbg_write_trace(p->xbuf, len+5);
SIM_dbg_write_trace((SYS_UWORD8 *)"AUANS", 5);
SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
SIM_dbg_tmp[1] = (SYS_WORD8)res;
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif
return(res);
}
/*
* SIM_Envelope
*
* Used by Network to tansfert data download to the SIM in a transparent way for user
*/
SYS_UWORD16 SIM_Envelope(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 len, SYS_UWORD8 *rcvSize)
{
SIM_PORT *p;
int i;
int res;
p = &(Sim[0]);
p->xbuf[0] = GSM_CLASS;
p->xbuf[1] = SIM_ENVELOPE;
p->xbuf[2] = 0;
p->xbuf[3] = 0;
p->xbuf[4] = len;
for (i=0;i<len;i++)
{
p->xbuf[5+i] = *(dat+i);
}
res = SIM_Command(p, len, result, rcvSize);
#ifdef SIM_DEBUG_TRACE
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -