#include "dido.h" #include "plt.h" struct dido_t dido[DIDO_NBR_MAX + 1]; static int dido_dbcb_0(void *para, int ncolumn, char **columnvalue, char *columnname[]) { int i; struct dbcbparam_t *pcbparam = (struct dbcbparam_t *)para; struct dido_t *dev = &dido[1]; pcbparam->nrow++; log_dbg("%s, ++,row:%d, col:%d", __func__, pcbparam->nrow, ncolumn); for (i = 0; i < ncolumn; i++) { if (strcmp("model", columnname[i]) == 0) { strcpy(dev->szmodel, columnvalue[i]); dev->model = plt_devm_str2nbr(dev->szmodel); } } pcbparam->ret = 0; log_dbg("%s, --,ret:%d", __func__, pcbparam->ret); return 0; } int dido_get_model() { return dido[1].model; } int dido_init() { int result; char *errmsg = NULL; sqlite3 *db = NULL; char sql[1024]; struct dbcbparam_t cbparam; int ret = 0; int model = 0; log_dbg("%s, ++", __func__); plt_lock_ctndb(); db = plt_get_ctndb(); sprintf(sql, "select * from dido"); cbparam.nrow = 0; result = sqlite3_exec(db, sql, dido_dbcb_0, (void *)&cbparam, &errmsg); plt_unlock_ctndb(); if (result != SQLITE_OK) { log_dbg("%s, result != SQLITE_OK : %d", __func__, result); ret = -1; } else if (cbparam.ret != 0) { log_dbg("%s, cbparam.ret != 0 : %d", __func__, cbparam.ret); ret = -2; } else if (cbparam.nrow != 1) { log_dbg("%s, cbparam.nrow != 1 : %d", __func__, cbparam.nrow); ret = -3; } else { model = dido_get_model(); if (model == DEVM_ZLGMCU_DIDO) { dido_zlgmcu_init(); } else { log_dbg("%s, unknown model:%d", __func__, model); ret = -4; } } log_dbg("%s, --, ret:%d", __func__, ret); return ret; } // 0 : ok, all device in stat int dido_chk_state_all(int stat) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_chk_state_all(stat); } else { return -1; } } int dido_send_sm_cmd_all(int cmd) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_send_sm_cmd_all(cmd); } else { return -1; } } int dido_send_sm_cmd(int idx, int cmd) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_send_sm_cmd(idx, cmd); } else { return -1; } } int dido_get_comm_st(int idx) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_get_comm_st(idx); } else { return -1; } } int dido_get_nbr() { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_get_nbr(); } else { return -1; } } int dido_get_state(int idx) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_get_state(idx); } else { return -1; } } char *dido_get_model_str(int idx) { return dido[idx].szmodel; } int dido_get_tick(int idx) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { return dido_zlgmcu_get_tick(idx); } else { return -1; } } int dido_get_tool_data(char *buf) { int model = dido[1].model; int i = 0; char temp_buf[2048]; if (model == DEVM_ZLGMCU_DIDO) { sprintf(buf, "" REVERSE " DIDO " NONE " model:%s info:%s\n", dido[1].szmodel, dido[1].szinfo); for (i = 1; i <= dido_zlgmcu_get_nbr(); i++) { memset(temp_buf, 0, sizeof(temp_buf)); dido_zlgmcu_get_tool_data(i, temp_buf); strcat(buf, temp_buf); } return 0; } else { return -1; } } int dido_get_tbmqtt_data(char *buf) { if (dido[1].model == DEVM_ZLGMCU_DIDO) { dido_zlgmcu_get_tbmqtt_data(1, buf); return 0; } else { return -1; } } int dido_get_cloud_data(char *buf) { if (dido[1].model == DEVM_ZLGMCU_DIDO) { dido_zlgmcu_get_cloud_data(1, buf); return 0; } else { return -1; } } int dido_fire_confirm(int idx, int iValue) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { for (int i = 1; i <= dido_zlgmcu_get_nbr(); i++) { if (dido_zlgmcu_get_comm_st(i) != COMMST_NORMAL) { dido_zlgmcu_fire_confirm(i, iValue); } } return 0; } return -1; } int dido_fan_switch(int idx, int iValue) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { for (int i = 1; i <= dido_zlgmcu_get_nbr(); i++) { if (dido_zlgmcu_get_comm_st(i) != COMMST_NORMAL) { dido_zlgmcu_fan_switch(i, iValue); } } return 0; } return -1; } int dido_sys_alarm(int idx, int iValue) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { for (int i = 1; i <= dido_zlgmcu_get_nbr(); i++) { if (dido_zlgmcu_get_comm_st(i) != COMMST_NORMAL) { dido_zlgmcu_sys_alarm(i, iValue); } } return 0; } return -1; } int dido_door_opened() { return 0; // 暂时关闭门磁 int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { for (int i = 1; i <= dido_zlgmcu_get_nbr(); i++) { if (dido_zlgmcu_door_opened(i) > 0) return 1; } } return 0; } int dido_get_modbus_data(int idx,unsigned short* data) { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { dido_zlgmcu_get_modbus_data(idx, data); } else { data[0] = (unsigned short)model; data[1] = (unsigned short)0; } return 0; } int dido_fe_spurt() { int model = dido[1].model; if (model == DEVM_ZLGMCU_DIDO) { for (int i = 1; i <= dido_zlgmcu_get_nbr(); i++) { if (dido_zlgmcu_fe_spurt(i) != 0) return 1; } } return 0; }