设为首页 加入收藏

TOP

C语言中表驱动编程(动态加载)(二)
2013-09-24 09:24:49 来源: 作者: 【 】 浏览:1071
Tags:语言 中表 驱动 编程 动态 加载

 

  下面以锁机锁卡部分功能来实现锁机锁卡模块命令处理函数应用,加深对此框架的理解。

  锁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 ) )

  {

        

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/12/12
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Windows编程:位图背景与画刷 下一篇C语言复习之结构体和指针

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: