#include "fe.h" #include "plt.h" struct fe_t fe[FE_NBR_MAX + 1]; static int fe_dbcb_0(void *para, int ncolumn, char **columnvalue, char *columnname[]) { struct dbcbparam_t *pcbparam = (struct dbcbparam_t *)para; struct fe_t *dev = &fe[1]; pcbparam->nrow++; log_dbg("%s, ++,row:%d, col:%d", __func__, pcbparam->nrow, ncolumn); for (int i = 0; i < ncolumn; i++) { if (strcmp("model", columnname[i]) == 0) { strcpy(dev->szmodel, columnvalue[i]); dev->model = plt_devm_str2nbr(dev->szmodel); } } dev->model_nbr = 1; pcbparam->ret = 0; log_dbg("%s, --,ret:%d", __func__, pcbparam->ret); return 0; } int fe_get_model() { return fe[1].model; } int fe_get_init_data(int ctn_idx, char *buf) { char temp[4096]; int model = fe[1].model; if (model == DEVM_YF2825) { int r = yf2825_get_init_data(ctn_idx, 1, buf); strcat(buf, temp); return r; } else if (model == DEVM_RS311) { int r = rs311_get_init_data(ctn_idx, 1, buf); strcat(buf, temp); return r; } else { return NULL; } } int fe_set_start(int startIdx) { int model = fe[1].model; if (model == DEVM_YF2825) { return yf2825_set_dev_start(1, startIdx); } } int fe_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 fe"); cbparam.nrow = 0; result = sqlite3_exec(db, sql, fe_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 = fe_get_model(); if (model == DEVM_YF2825) { yf2825_init(); } else if (model == DEVM_RS311) { rs311_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 fe_chk_state_all(int stat) { int model = fe[1].model; if (model == DEVM_YF2825) { return yf2825_chk_state_all(stat); } else if (model == DEVM_RS311) { return rs311_chk_state_all(stat); } else { return -1; } } int fe_send_sm_cmd_all(int cmd) { int model = fe[1].model; if (model == DEVM_YF2825) { return yf2825_send_sm_cmd_all(cmd); } else if (model == DEVM_RS311) { return rs311_send_sm_cmd_all(cmd); } else { return -1; } } int fe_send_sm_cmd(int idx, int cmd) { int model = fe[1].model; if (model == DEVM_YF2825) { return yf2825_send_sm_cmd(idx, cmd); } else if (model == DEVM_RS311) { return rs311_send_sm_cmd(idx, cmd); } else { return -1; } } char *fe_get_model_str(int idx) { return fe[idx].szmodel; } int fe_get_tool_data(char *buf) { int model = fe[1].model; int i = 0; char temp_buf[2048]; if (model == DEVM_YF2825) { sprintf(buf, "" REVERSE " FE " NONE " model:%s info:%s\n", fe[1].szmodel, fe[1].szinfo); for (i = 1; i <= yf2825_get_nbr(); i++) { memset(temp_buf, 0, sizeof(temp_buf)); yf2825_get_tool_data(i, temp_buf); strcat(buf, temp_buf); } return 0; } else if (model == DEVM_RS311) { sprintf(buf, "" REVERSE " FE " NONE " model:%s info:%s\n", fe[1].szmodel, fe[1].szinfo); for (i = 1; i <= rs311_get_nbr(); i++) { memset(temp_buf, 0, sizeof(temp_buf)); rs311_get_tool_data(i, temp_buf); strcat(buf, temp_buf); } return 0; } else { return -1; } } int fe_get_tbmqtt_data(char *buf) { for (int i = 1; i <= fe[1].model_nbr; i++) { if (fe[1].model == DEVM_YF2825) { for (int idx = 1; idx <= yf2825_get_nbr(); idx++) { if (yf2825_get_comm_st(idx) != COMMST_NORMAL) { if (i == fe[1].model_nbr && idx == yf2825_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } char temp_buf[2048]; memset(temp_buf, 0, sizeof(temp_buf)); yf2825_get_tbmqtt_data(idx, temp_buf); strcat(buf, temp_buf); if (i != fe[1].model_nbr || idx != yf2825_get_nbr()) { strcat(buf, ","); } } } else if (fe[1].model == DEVM_RS311) { for (int idx = 1; idx <= rs311_get_nbr(); idx++) { if (rs311_get_comm_st(idx) != COMMST_NORMAL) { if (i == fe[1].model_nbr && idx == rs311_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } char temp_buf[2048]; memset(temp_buf, 0, sizeof(temp_buf)); rs311_get_tbmqtt_data(idx, temp_buf); strcat(buf, temp_buf); if (i != fe[1].model_nbr || idx != rs311_get_nbr()) { strcat(buf, ","); } } } } return 0; } int fe_get_cloud_data(int ctn_idx, char *buf) { for (int i = 1; i <= fe[1].model_nbr; i++) { if (fe[1].model == DEVM_YF2825) { for (int idx = 1; idx <= yf2825_get_nbr(); idx++) { if (yf2825_get_comm_st(idx) != COMMST_NORMAL) { if (i == fe[1].model_nbr && idx == yf2825_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } char temp_buf[2048]; memset(temp_buf, 0, sizeof(temp_buf)); yf2825_get_cloud_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != fe[1].model_nbr || idx != yf2825_get_nbr()) { strcat(buf, ","); } } } else if (fe[1].model == DEVM_RS311) { for (int idx = 1; idx <= rs311_get_nbr(); idx++) { if (rs311_get_comm_st(idx) != COMMST_NORMAL) { if (i == fe[1].model_nbr && idx == rs311_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } char temp_buf[2048]; memset(temp_buf, 0, sizeof(temp_buf)); rs311_get_cloud_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != fe[1].model_nbr || idx != rs311_get_nbr()) { strcat(buf, ","); } } } } return 0; } int fe_get_modbus_data(int idx, unsigned short* data) { int model = fe[1].model; if (model == DEVM_YF2825) { yf2825_get_modbus_data(idx,data); } else { data[0] = (unsigned short)model; data[1] = (unsigned short)0; } return 0; } // int fe_get_bkds_data(char* buf) // { // int model = fe[1].model; // int i = 0; // char buf_temp[8000]; // sprintf(buf,"\"fe\":["); // if( model == DEVM_YF2825 ){ // for(i = 1;i <= yf2825_get_nbr();i ++ ){ // strcat(buf,"{"); // yf2825_get_bkds_data(i,buf_temp); // strcat(buf,buf_temp); // strcat(buf,"}"); // if(i != yf2825_get_nbr()){ // strcat(buf,","); // } // } // }else{ // return -1; // } // strcat(buf,"]"); // }