下面以锁机锁卡部分功能来实现锁机锁卡模块命令处理函数应用,加深对此框架的理解。
锁pin码命令处理函数
static NMCMD_RETURN nmcmd_lock_pin(C_UINT16 cmd_id, const C_CHAR * p_cmd_data, C_UINT8 data_len)
{
if ((data_len < 1) || (data_len > 2) || (XINO_IsNumStr(p_cmd_data, data_len) == C_FALSE))
{
return RET_NMCMD_INVALID_DATA;
}
// 根据数据内容做相应的处理begin
if(XINO_STR2INT((const C_CHAR *)p_cmd_data, data_len) == 0)
{
locknv_enable_pin( 0 );
}
else
{
locknv_enable_pin( 1 );
}
// 根据数据内容做相应的处理end
return RET_NMCMD_SUCCESS;
}
/*-----------------------------------------------------------------------------*/
//锁机锁卡功能模块 命令 与命令处理函数对应表
static const NMCMD_FUNCTION m_acstcmd[] =
{
{ID_NMCMD_LOCK_PIN, nmcmd_lock_pin }, //修改开机自动锁Pin码
{ID_NMCMD_ENABLE_RAND_PIN, nmcmd_enable_rand_pin }, //修改是否启用随机PIN码
{ID_NMCMD_SET_FIXED_PIN , nmcmd_fix_pin }, /* 设置固定PIN码*/
{ID_NMCMD_INIT_PIN, nmcmd_init_pin }, //修改初始PIN码
{ID_NMCMD_LOCK_IMSI, nmcmd_lock_imsi }, //修改开机自动绑定IMSI号
{ID_NMCMD_CELL_LOCKED, nmcmd_cell_locked }, //修改是否锁定CELL
{ID_NMCMD_CELL_AUTOINC, nmcmd_cell_autoinc }, //修改CELL是否自动增长
{ID_NMCMD_CELL_LOCK_MAX, nmcmd_cell_lock_max }, //修改CELL最大锁定个数
{ID_NMCMD_CLEAN_CELL_LIST, nmcmd_clean_cell_list }, //清除CELL锁定列表
{ID_NMCMD_CELL_LIST_TYPE, nmcmd_cell_list_type }, //锁定CELL类型- 黑白名单
{ID_NMCMD_LOCK_CELL_APPEND, nmcmd_lock_cell_append }, //添加锁定的CELL
{ID_NMCMD_LAC_LOCKED, nmcmd_lac_locked }, //修改是否锁定lAC
{ID_NMCMD_LAC_LIST_TYPE, nmcmd_lac_list_type }, //锁定lac类型- 黑白名单
{ID_NMCMD_LAC_AUTOINC, nmcmd_lac_autoinc }, //修改lac是否自动增长
{ID_NMCMD_LAC_LOCK_MAX, nmcmd_lac_lock_max }, //修改lac最大锁定个数
{ID_NMCMD_CLEAN_LAC_LIST, nmcmd_clean_lac_list }, //清除lac锁定列表
{ID_NMCMD_LOCK_LAC_APPEND, nmcmd_lock_lac_append }, //添加锁定的lac
/* 锁运营商*/
{ID_NMCMD_LOCK_SP_CLEAN, nmcmd_lock_sp_clean }, //锁定运营商表-清除
{ID_NMCMD_LOCK_SP_APPEND_MODIFY, nmcmd_lock_sp_append_modify }, //锁定运营商表-添加/修改
//{ID_NMCMD_LOCK_SP_DELETE, nmcmd_lock_sp_delete }, //锁定运营商表-删除
{C_PNULL, C_PNULL },
};
其中ID_NMCMD_LOCK_PIN ID_NMCMD_CLEAN_LAC_LIST 等 为定义的命令
nmcmd_lock_pin nmcmd_enable_rand_pin 等为 命令对应的处理函数。
/*-----------------------------------------------------------------------------
* 全局_函数实现
*-----------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
* 函数名称: locknm_handlercmd
* 功能描述: 处理器 处理锁机锁卡根据命令查找对应树立函数
*
* 输入参数:
* 输出参数:
* 返 回 值:
*
* 历史纪录:
* 修改人 日期 日志
* 2010-7-9
*---------------------------------------------------------------------------*/
NMCMD_RETURN locknm_handlercmd(C_UINT16 cmd_id, const char * p_cmd_data, C_UINT8 data_len)
{
NMCMD_RETURN bRet = RET_NMCMD_FAIL;
C_UINT16 nTableSize = sizeof( m_acstcmd ) /sizeof(m_acstcmd[0]);
NMCMD_FUNCTION *pTable = m_acstcmd;
C_UINT16 i = 0;
XINO_TRACE_LOW("[xjp] locknm_handlercmd enter");
for( i = 0; i < nTableSize; i++ )
{
if( ( pTable[i].cmd_id == cmd_id ) && ( pTable[i].cmd_fun != C_PNULL ) )
{