#include "env.h" #include "plt.h" struct env_t env[ENV_NBR_MAX + 1]; static int env_dbcb_0(void *para, int ncolumn, char **columnvalue, char *columnname[]) { int i; struct dbcbparam_t *pcbparam = (struct dbcbparam_t *)para; struct env_t *dev = &env[1]; char szmodel_list[128]; char delims[] = ","; char *result = NULL; int model; 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(szmodel_list, columnvalue[i]); result = strtok(szmodel_list, delims); while (result != NULL) { dev->model_nbr++; model = plt_devm_str2nbr(result); if (model != DEVM_INVALID) { dev->model[dev->model_nbr] = model; strcpy(dev->szmodel[dev->model_nbr], result); log_dbg("%s, get env model:%s", __func__, result); } else { dev->model_nbr--; log_dbg("%s, get invalid env model:%s", __func__, result); } result = strtok(NULL, delims); } } } pcbparam->ret = 0; log_dbg("%s, --,ret:%d", __func__, pcbparam->ret); return 0; } // int env_get_model() //{ // return env[1].model; // } int env_get_model_nbr() { return env[1].model_nbr; } int env_init() { int result = 0; int ret = 0; int model = 0; char *errmsg = NULL; char sql[1024]; struct dbcbparam_t cbparam; sqlite3 *db = NULL; int i; log_dbg("%s, ++", __func__); plt_lock_ctndb(); db = plt_get_ctndb(); sprintf(sql, "select * from env"); cbparam.nrow = 0; result = sqlite3_exec(db, sql, env_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 { for (i = 1; i <= env_get_model_nbr(); i++) { model = env[1].model[i]; if (model == DEVM_RS_WS_N) { rs_ws_n_init(); } else if (model == DEVM_SGA500E) { sga500e_init(); } else if (model == DEVM_RH811AD053F) { rh811ad053f_init(); } else if (model == DEVM_CD1F3300) { cd1f3300_init(); } else { log_dbg("%s, unknown model:%d", __func__, model); ret = -4; } } } log_dbg("%s--, ret:%d", __func__, ret); return ret; } // 0 : ok int env_chk_state_all(int model, int stat) { // return 0; if (model == DEVM_RS_WS_N) { return rs_ws_n_chk_stat_all(stat); } else if (model == DEVM_SGA500E) { return sga500e_chk_stat_all(stat); } else if (model == DEVM_RH811AD053F) { return rh811ad053f_chk_stat_all(stat); } else { return -1; } } int env_chk_state_model_all(int stat) { int i = 0; int model = 0; int ret = 0; for (i = 1; i <= env_get_model_nbr(); i++) { model = env[1].model[i]; if ((model == DEVM_RS_WS_N && rs_ws_n_chk_stat_all(stat) == 0) || (model == DEVM_SGA500E && sga500e_chk_stat_all(stat) == 0) || (model == DEVM_RH811AD053F && rh811ad053f_chk_stat_all(stat) == 0) || (model == DEVM_CD1F3300 && cd1f3300_chk_stat_all(stat) == 0)) { ret = 0; } else { ret = -1; break; } } /// log_dbg("%s, ret:%d", __func__, ret); return ret; } int env_send_sm_cmd_all(int model, int cmd) { if (model == DEVM_RS_WS_N) { return rs_ws_n_send_sm_cmd_all(cmd); } else if (model == DEVM_SGA500E) { return sga500e_send_sm_cmd_all(cmd); } else if (model == DEVM_RH811AD053F) { return rh811ad053f_send_sm_cmd_all(cmd); } else { return -1; } } int env_send_sm_cmd_model_all(int cmd) { int i = 0; int model = 0; int ret = 0; for (i = 1; i <= env_get_model_nbr(); i++) { model = env[1].model[i]; if ((model == DEVM_RS_WS_N && rs_ws_n_send_sm_cmd_all(cmd) == 0) || (model == DEVM_SGA500E && sga500e_send_sm_cmd_all(cmd) == 0) || (model == DEVM_RH811AD053F && rh811ad053f_send_sm_cmd_all(cmd) == 0) || (model == DEVM_CD1F3300 && cd1f3300_send_sm_cmd_all(cmd) == 0)) { ret = 0; } else { ret = -1; break; } } return ret; } int env_send_sm_cmd(int model, int idx, int cmd) { if (model == DEVM_RS_WS_N) { return rs_ws_n_send_sm_cmd(idx, cmd); } else if (model == DEVM_SGA500E) { return sga500e_send_sm_cmd(idx, cmd); } else if (model == DEVM_RH811AD053F) { return rh811ad053f_send_sm_cmd(idx, cmd); } else { return -1; } } int env_get_temp(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_temp(idx); } if (model == DEVM_RH811AD053F) { return rh811ad053f_get_temp(idx); } else { return -1; } } int env_get_humi(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_humi(idx); } if (model == DEVM_RH811AD053F) { return rh811ad053f_get_humi(idx); } else { return -1; } } double env_get_gas_density(int model, int idx) { if (model == DEVM_SGA500E) { return sga500e_get_density(idx); } else { return -1; } } int env_get_co_density(int model, int idx) { if (model == DEVM_CD1F3300) { return cd1f3300_get_co_density(idx); } else { return -1; } } int env_get_co_threshold(int model, int idx) { if (model == DEVM_CD1F3300) { return cd1f3300_get_co_threshold(idx); } else { return -1; } } int env_get_comm_st(int model, int idx) { if (model == DEVM_CD1F3300) { return cd1f3300_get_comm_st(idx); } else if (model == DEVM_RH811AD053F) { return rh811ad053f_get_comm_st(idx); } return 0; } int env_get_nbr(int model) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_nbr(); } else if (model == DEVM_SGA500E) { return sga500e_get_nbr(); } else { return -1; } } char *env_get_state_str(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_state_str(idx); } else if (model == DEVM_SGA500E) { return sga500e_get_state_str(idx); } else { return NULL; } } int env_get_state(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_state(idx); } else if (model == DEVM_SGA500E) { return sga500e_get_state(idx); } else { return -1; } } int env_get_chan_idx(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_chan_idx(idx); } else if (model == DEVM_SGA500E) { return sga500e_get_chan_idx(idx); } else { return -1; } } int env_get_tick(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_tick(idx); } else if (model == DEVM_SGA500E) { return sga500e_get_tick(idx); } else { return -1; } } char *env_get_comm_state_str(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_comm_state_str(idx); } else if (model == DEVM_SGA500E) { return sga500e_get_comm_state_str(idx); } else { return -1; } } int env_get_addr(int model, int idx) { if (model == DEVM_RS_WS_N) { return rs_ws_n_get_addr(idx); } else if (model == DEVM_SGA500E) { return sga500e_get_addr(idx); } else { return -1; } } int env_chk_state(int stat) { int i = 0; int idx = 0; int ret = 0; for (i = 1; i <= env[1].model_nbr; i++) { if (env[1].model[i] == DEVM_RS_WS_N) { for (idx = 1; idx <= rs_ws_n_get_nbr(); idx++) { if (rs_ws_n_get_state(idx) != stat) { return -1; } } } else if (env[1].model[i] == DEVM_SGA500E) { for (idx = 1; idx <= sga500e_get_nbr(); idx++) { if (sga500e_get_state(idx) != stat) { return -1; } } } else if (env[1].model[i] == DEVM_RH811AD053F) { for (idx = 1; idx <= rh811ad053f_get_nbr(); idx++) { if (rh811ad053f_get_state(idx) != stat) { return -1; } } } else { return -1; } } return ret; } int env_get_tool_data(char *buf) { int i = 0; int idx = 0; char temp_buf[2048]; sprintf(buf, "" REVERSE " ENV " NONE " model_nbr:%d\n", env[1].model_nbr); for (i = 1; i <= env[1].model_nbr; i++) { if (env[1].model[i] == DEVM_RS_WS_N) { strcat(buf, "rs_ws_n\n"); for (idx = 1; idx <= rs_ws_n_get_nbr(); idx++) { memset(temp_buf, 0, sizeof(temp_buf)); rs_ws_n_get_tool_data(idx, temp_buf); strcat(buf, temp_buf); } } else if (env[1].model[i] == DEVM_SGA500E) { strcat(buf, "sga500e\n"); for (idx = 1; idx <= sga500e_get_nbr(); idx++) { memset(temp_buf, 0, sizeof(temp_buf)); sga500e_get_tool_data(idx, temp_buf); strcat(buf, temp_buf); } } else if (env[1].model[i] == DEVM_RH811AD053F) { strcat(buf, "rh811ad053f\n"); for (idx = 1; idx <= rh811ad053f_get_nbr(); idx++) { memset(temp_buf, 0, sizeof(temp_buf)); rh811ad053f_get_tool_data(idx, temp_buf); strcat(buf, temp_buf); } } else if (env[1].model[i] == DEVM_CD1F3300) { strcat(buf, "cd1f3300\n"); for (idx = 1; idx <= cd1f3300_get_nbr(); idx++) { memset(temp_buf, 0, sizeof(temp_buf)); cd1f3300_get_tool_data(idx, temp_buf); strcat(buf, temp_buf); } } else { return -1; } } return 0; } int env_get_tbmqtt_data(char *buf) { int i = 0; int idx = 0; char temp_buf[2048]; for (i = 1; i <= env[1].model_nbr; i++) { if (env[1].model[i] == DEVM_RS_WS_N) { for (idx = 1; idx <= rs_ws_n_get_nbr(); idx++) { if (rs_ws_n_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == rs_ws_n_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); rs_ws_n_get_tbmqtt_data(idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != rs_ws_n_get_nbr()) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_SGA500E) { for (idx = 1; idx <= sga500e_get_nbr(); idx++) { if (sga500e_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == sga500e_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); sga500e_get_tbmqtt_data(idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != sga500e_get_nbr()) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_RH811AD053F) { for (idx = 1; idx <= rh811ad053f_get_nbr(); idx++) { if (rh811ad053f_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == rh811ad053f_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); rh811ad053f_get_tbmqtt_data(idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != rh811ad053f_get_nbr()) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_CD1F3300) { for (idx = 1; idx <= cd1f3300_get_nbr(); idx++) { if (cd1f3300_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == cd1f3300_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); cd1f3300_get_tbmqtt_data(idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != cd1f3300_get_nbr()) { strcat(buf, ","); } } } else { if (strlen(buf) > 1) buf[strlen(buf) - 1] = 0; return -1; } } return 0; } int env_get_cloud_data(int ctn_idx, char *buf) { int i = 0; int idx = 0; char temp_buf[2048]; for (i = 1; i <= env[1].model_nbr; i++) { if (env[1].model[i] == DEVM_RS_WS_N) { for (idx = 1; idx <= rs_ws_n_get_nbr(); idx++) { if (rs_ws_n_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == rs_ws_n_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); rs_ws_n_get_cloud_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != rs_ws_n_get_nbr()) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_SGA500E) { for (idx = 1; idx <= sga500e_get_nbr(); idx++) { if (sga500e_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == sga500e_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); sga500e_get_cloud_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != sga500e_get_nbr()) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_RH811AD053F) { for (idx = 1; idx <= rh811ad053f_get_nbr(); idx++) { if (rh811ad053f_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == rh811ad053f_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); rh811ad053f_get_cloud_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != rh811ad053f_get_nbr()) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_CD1F3300) { for (idx = 1; idx <= cd1f3300_get_nbr(); idx++) { if (cd1f3300_get_comm_st(idx) != COMMST_NORMAL) { if (i == env[1].model_nbr && idx == cd1f3300_get_nbr() && strlen(buf) > 1) { buf[strlen(buf) - 1] = 0; } continue; } memset(temp_buf, 0, sizeof(temp_buf)); cd1f3300_get_cloud_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != cd1f3300_get_nbr()) { strcat(buf, ","); } } } else { if (strlen(buf) > 1) buf[strlen(buf) - 1] = 0; return -1; } } return 0; } int env_get_bkds_data(int model, char *buf) { char buf_temp[4096]; int i = 0; if (model == DEVM_RS_WS_N) { sprintf(buf, "\"th\":["); for (i = 1; i <= rs_ws_n_get_nbr(); i++) { memset(buf_temp, 0, sizeof(buf_temp)); strcat(buf, "{"); rs_ws_n_get_bkds_data(i, buf_temp); strcat(buf, buf_temp); strcat(buf, "}"); if (i < rs_ws_n_get_nbr(DEVM_RS_WS_N)) strcat(buf, ","); } strcat(buf, "]"); } else if (model == DEVM_SGA500E) { sprintf(buf, "\"gas\":["); for (i = 1; i <= sga500e_get_nbr(); i++) { memset(buf_temp, 0, sizeof(buf_temp)); strcat(buf, "{"); sga500e_get_bkds_data(i, buf_temp); strcat(buf, buf_temp); strcat(buf, "}"); if (i < sga500e_get_nbr()) strcat(buf, ","); } strcat(buf, "]"); } else { return -1; } return 0; } int env_get_init_data(int ctn_idx, char *buf) { char temp_buf[4096]; for (int i = 1; i <= env[1].model_nbr; i++) { if (env[1].model[i] == DEVM_CD1F3300) { for (int idx = 1; idx <= cd1f3300_get_nbr(); idx++) { memset(temp_buf, 0, sizeof(temp_buf)); cd1f3300_get_init_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr) { strcat(buf, ","); } } } else if (env[1].model[i] == DEVM_RH811AD053F) { for (int idx = 1; idx <= rh811ad053f_get_nbr(); idx++) { memset(temp_buf, 0, sizeof(temp_buf)); rh811ad053f_get_init_data(ctn_idx, idx, temp_buf); strcat(buf, temp_buf); if (i != env[1].model_nbr || idx != rh811ad053f_get_nbr()) { strcat(buf, ","); } } } } return 0; } int evn_get_modbus_data(int model, int idx, unsigned short *data) { if (model == DEVM_CD1F3300) { cd1f3300_get_modbus_data(idx, data); } else if (model == DEVM_RH811AD053F) { rh811ad053f_get_modbus_data(idx, data); } else { data[0] = (unsigned short)model; data[1] = (unsigned short)0; } return 0; }