/*********************************************** 此文件功能为业务处理模块功能,实现这些通用接口,可以把本模块以插件的形式配置到平台中 *********************************************/ #include "dev.h" #include "motor.h" #include "manage.h" #include "script.h" #include "corework.h" bool g_bInit = false; #pragma comment(lib, "var.lib") #pragma comment(lib, "skt.lib") #pragma comment(lib, "ops.lib") #pragma comment(lib, "log.lib") #pragma comment(lib, "user.lib") #pragma comment(lib, "config.lib") #pragma comment(lib, "sysapi.lib") #pragma comment(lib, "script.lib") #pragma comment(lib, "control.lib") int WINAPI Funwlog(pstack p, pjres r, char* err, int btest) { int ret = 0; int ecode = 0; char keyword[MAX_BUF_LEN] = { 0 }; char errmsg[MAX_BUF_LEN] = { 0 }; ret = script_calculate3(&p, r, err); if (ret || !p) {//参数错误或不够 if (err) strcpy(err, "wlog(keyword,err,errmsg,msg) 入参错误."); return ERR_FORMAT_MSG; } comm_strncpy(keyword, r->gets(), MAX_BUF_LEN); ret = script_calculate3(&p, r, err); if (ret || !p) {//参数错误或不够 if (err) strcpy(err, "wlog(keyword,err,errmsg,msg) 入参错误."); return ERR_FORMAT_MSG; } if (EMSTR_INT != r->type()) {//必须为整数 if (err) strcpy(err, "wlog(keyword,err,errmsg,msg) 入参err必须为整数"); return ERR_FORMAT_MSG; } ecode = r->geti(); ret = script_calculate3(&p, r, err); if (ret || !p) {//参数错误或不够 if (err) strcpy(err, "wlog(keyword,err,errmsg,msg) 入参错误."); return ERR_FORMAT_MSG; } comm_strncpy(errmsg, r->gets(), MAX_BUF_LEN); ret = script_calculate3(&p, r, err); if (ret || p) {//参数错误 if (err) strcpy(err, "wlog(keyword,err,errmsg,msg) 入参错误."); return ERR_FORMAT_MSG; } RETURN_CHK_NOPRT(!btest, 0); //is test return wlog(keyword, ecode, errmsg, r->gets()); } int WINAPI FunwVlog(pstack p, pjres r, char* err, int btest) { int ret = 0; char node[MAX_BUF_LEN] = { 0 }; ret = script_calculate3(&p, r, err); if (ret || !p) {//参数错误或不够 if (err) strcpy(err, "vlog(node,msg) 入参错误."); return ERR_FORMAT_MSG; } comm_strncpy(node, r->gets(), MAX_BUF_LEN); ret = script_calculate3(&p, r, err); if (ret || p) {//参数错误 if (err) strcpy(err, "vlog(node,msg) 入参错误."); return ERR_FORMAT_MSG; } RETURN_CHK_NOPRT(!btest, 0); //is test return vlog(node, r->gets()); } static const char* g_errDesc[] = { "该位置无产品.", "该位置已经有产品存在.", }; /*********************************************** *Function: 获取插件信息描述 *Intput: pDev 插件信息结构体 *Output: pDev 插件信息缓冲区 *Return: 参考EM_ERR_CODE *********************************************/ EXPORT_C int WINAPI get_dev_info(TDevInfo* pDev) { RETURN_CHK_NOPRT(pDev, ERR_INPUT_PARAM); memset(pDev, 0, sizeof(TDevInfo)); strcpy(pDev->id, "corework"); strcpy(pDev->desc, "业务处理模块"); return 0; } EXPORT_C void WINAPI init() { ZERO_CHK(!g_bInit); g_bInit = true; script_reg_fun("wlog", Funwlog); script_reg_fun("vlog", FunwVlog); for (int i = 0; i < sizeof(g_errDesc) / sizeof(char*); i++) { set_err_desc(i + ERR_NO_PRODUCT, g_errDesc[i]); } ins; } EXPORT_C void WINAPI deinit() { ZERO_CHK(g_bInit); g_bInit = false; CManage::ReleaseInstance(); } EXPORT_C int WINAPI get_command_desc(char* pszcmddesc) { RETURN_CHK_NOPRT(g_bInit, ERR_NO_INIT); return ins->GetCommandDesc(pszcmddesc); } EXPORT_C int WINAPI init_devs(ushort index, const char* ctx) {//直接成功 if (0 == index) ins->Init(); return 0; } EXPORT_C int WINAPI uninit_dev(ushort index) {//直接成功 if (0 == index) ins->Deinit(); return 0; } EXPORT_C int WINAPI get_status(ushort index) { return g_bInit ? EDev_IDLE : EDev_NOINIT; } EXPORT_C int WINAPI send_custom_msg(ushort index, const char* msg, char* res/* = 0*/) { RETURN_CHK_NOPRT(g_bInit, ERR_NO_INIT); return ins->SendCustomCmd(msg, res); } EXPORT_C int WINAPI recv_custom_msg(ushort index, const char* msg, char* res, int timeout/* = 0*/) { //RETURN_CHK(0 == index, ERR_INPUT_PARAM); RETURN_CHK_NOPRT(g_bInit, ERR_NO_INIT); return ins->RecvCustomCmd(msg, res, timeout); }