C语言中表驱动编程(动态加载)(十二)

2013-09-24 09:24:49 · 作者: · 浏览: 1121

 

  /* 处理成功*/

  pTable[i].cmd_fun( cmd_id, p_cmd_data, data_len );

  bRet = RET_NMCMD_SUCCESS;

  break;

  }

  }

  XINO_TRACE_LOW("[xjp] locknm_handlercmd leave");

  return bRet;

  }

  开机初始化时 调用lock_init_proc 加载锁机锁卡命令处理函数locknm_handlercmd 到链表中。

  C_VOID lock_init_proc( C_VOID )

  {

  /* 加载命令处理*/

  xnnm_LoadProc(locknm_handlercmd); /* 加载开机处理器*/

  }

  命令接收处调用  xnnm_ExecProc( C_UINT16 cmd_id, const C_CHAR * p_cmd_data, C_UINT8 data_len ) 进行处理。

  如果有新增一个模块

  需要完成的工作就是

  1.新增 命令与函数对应关系表  本例为  static const NMCMD_FUNCTION m_acstcmd[] =

  2.新增 根据命令查找处理函数  本例为  NMCMD_RETURN locknm_handlercmd(C_UINT16 cmd_id, const char * p_cmd_data, C_UINT8 data_len)

  3. 新增相应命令处理函数,    本例为  static NMCMD_RETURN nmcmd_lock_pin(C_UINT16 cmd_id, const C_CHAR * p_cmd_data, C_UINT8 data_len)

  4. 在终端初始化部分加载根据命令查找对应处理函数  本例为C_VOID lock_init_proc( C_VOID )