#include "ctn.h" #include "plt.h" struct ctn_t ctn[CTN_NBR_MAX + 1]; static int ctn_dbcb_0(void *para, int ncolumn, char **columnvalue, char *columnname[]) { int i; struct dbcbparam_t *pcbparam = (struct dbcbparam_t *)para; struct ctn_t *dev = &ctn[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); } else if (strcmp("info", columnname[i]) == 0) { strcpy(dev->szinfo, columnvalue[i]); } else if (strcmp("idx_in_ess", columnname[i]) == 0) { dev->idx_in_ess = atoi(columnvalue[i]); } else if (strcmp("sn", columnname[i]) == 0) { strcpy(dev->szsn, columnvalue[i]); } else if (strcmp("projId", columnname[i]) == 0) { strcpy(dev->szprojId, columnvalue[i]); } } pcbparam->ret = 0; log_dbg("%s, --,ret:%d", __func__, pcbparam->ret); return 0; } int ctn_init() { int result; char *errmsg = NULL; sqlite3 *db = NULL; char sql[1024]; struct dbcbparam_t cbparam; int ret = 0; struct ctn_t *dev = &ctn[1]; int model = -1; log_dbg("%s, ++", __func__); plt_lock_ctndb(); db = plt_get_ctndb(); sprintf(sql, "select * from ctn"); cbparam.nrow = 0; result = sqlite3_exec(db, sql, ctn_dbcb_0, (void *)&cbparam, &errmsg); plt_unlock_ctndb(); if (result != SQLITE_OK) { log_dbg("%s, result != SQLITE_OK : %d, err : %s", __func__, result, errmsg); 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; } plt_lock_projdb(); db = plt_get_projdb(); sprintf(sql, "select * from ctn"); cbparam.nrow = 0; result = sqlite3_exec(db, sql, ctn_dbcb_0, (void *)&cbparam, &errmsg); plt_unlock_projdb(); 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 = ctn[1].model; memset(ctn[1].szsn, 0, SIZEOF_ARRAY(ctn[1].szsn)); sprintf(ctn[1].szsn, "ctn-%d-%s", ctn[1].idx_in_ess, ctn[1].szprojId); strncpy(ctn[1].szinfo, ctn[1].szsn, SIZEOF_ARRAY(ctn[1].szinfo)); if (model == DEVM_CESS2000) { cess2000_init(); } else if (model == DEVM_CELL280) { cell280_init(); } else if (model == DEVM_ZH200) { zh200_init(); } else { log_dbg("%s, unknown model:%d", __func__, model); ret = -4; } } log_dbg("%s, --, ret:%d", __func__, ret); return ret; } int ctn_send_cmd(int cmd) { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_send_cmd(1, cmd); } else if (model == DEVM_CELL280) { return cell280_send_cmd(1, cmd); } else if (model == DEVM_ZH200) { return zh200_send_cmd(1, cmd); } else { return -1; } } int ctn_set_aps(int val) { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_set_aps(1, val); } else if (model == DEVM_CELL280) { return cell280_set_aps(1, val); } else if (model == DEVM_ZH200) { return zh200_set_aps(1, val); } else { return -1; } } char *ctn_get_sn() { return ctn[1].szsn; } char *ctn_get_info() { return ctn[1].szinfo; } char *ctn_get_model_str() { return ctn[1].szmodel; } int ctn_get_idx_in_ess() { return ctn[1].idx_in_ess; } int ctn_get_state() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_state(1); } else if (model == DEVM_CELL280) { return cell280_get_state(1); } else if (model == DEVM_ZH200) { return zh200_get_state(1); } else { return -1; } } char *ctn_get_state_str() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_state_str(1); } else if (model == DEVM_CELL280) { return cell280_get_state_str(1); } else if (model == DEVM_ZH200) { return zh200_get_state_str(1); } else { return -1; } } int ctn_get_tick() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_tick(1); } else if (model == DEVM_CELL280) { return cell280_get_tick(1); } else if (model == DEVM_ZH200) { return zh200_get_tick(1); } else { return -1; } } double ctn_get_tick_ave() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_tick_ave(1); } else if (model == DEVM_CELL280) { return cell280_get_tick_ave(1); } else if (model == DEVM_ZH200) { return zh200_get_tick_ave(1); } else { return -1; } } double ctn_get_tick_cur() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_tick_cur(1); } else if (model == DEVM_CELL280) { return cell280_get_tick_cur(1); } else if (model == DEVM_ZH200) { return zh200_get_tick_cur(1); } else { return -1; } } double ctn_get_tick_max() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_tick_max(1); } else if (model == DEVM_CELL280) { return cell280_get_tick_max(1); } else if (model == DEVM_ZH200) { return zh200_get_tick_max(1); } else { return -1; } } int ctn_get_step() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_step(1); } else if (model == DEVM_CELL280) { return cell280_get_step(1); } else if (model == DEVM_ZH200) { return zh200_get_step(1); } else { return -1; } } int ctn_get_ap() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_ap(1); } else if (model == DEVM_CELL280) { return cell280_get_ap(1); } else if (model == DEVM_ZH200) { return zh200_get_ap(1); } else { return -1; } } int ctn_get_aps() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_aps(1); } else if (model == DEVM_CELL280) { return cell280_get_aps(1); } else if (model == DEVM_ZH200) { return zh200_get_aps(1); } else { return -1; } } int ctn_get_chgable() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_chgable(1); } else if (model == DEVM_CELL280) { return cell280_get_chgable(1); } else if (model == DEVM_ZH200) { return zh200_get_chgable(1); } else { return -1; } } int ctn_get_dhgable() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_dhgable(1); } else if (model == DEVM_CELL280) { return cell280_get_dhgable(1); } else if (model == DEVM_ZH200) { return zh200_get_dhgable(1); } else { return -1; } } int ctn_get_last_aps() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_last_aps(1); } else if (model == DEVM_CELL280) { return cell280_get_last_aps(1); } else if (model == DEVM_ZH200) { return zh200_get_last_aps(1); } else { return -1; } } int ctn_get_norm_cap() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_norm_cap(1); } else if (model == DEVM_CELL280) { return cell280_get_norm_cap(1); } else if (model == DEVM_ZH200) { return zh200_get_norm_cap(1); } else { return -1; } } int ctn_get_norm_pow() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_norm_pow(1); } else if (model == DEVM_CELL280) { return cell280_get_norm_pow(1); } else if (model == DEVM_ZH200) { return zh200_get_norm_pow(1); } else { return -1; } } int ctn_get_min_pow() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_min_pow(1); } else if (model == DEVM_CELL280) { return cell280_get_min_pow(1); } else if (model == DEVM_ZH200) { return zh200_get_min_pow(1); } else { return -1; } } double ctn_get_soc() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_soc(1); } else if (model == DEVM_CELL280) { return cell280_get_soc(1); } else if (model == DEVM_ZH200) { return zh200_get_soc(1); } else { return -1; } } double ctn_get_soh() { int model = ctn[1].model; if (model == DEVM_ZH200) { return zh200_get_soh(1); } else { return -1; } } char *ctn_get_err_str() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_err_str(1); } else if (model == DEVM_CELL280) { return cell280_get_err_str(1); } else if (model == DEVM_ZH200) { return zh200_get_err_str(1); } else { return NULL; } } int ctn_get_err() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_err(1); } else if (model == DEVM_CELL280) { return cell280_get_err(1); } else if (model == DEVM_ZH200) { return zh200_get_err(1); } else { return -1; } } int ctn_enable_bsytikchk() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_enable_bsytikchk(1); } else if (model == DEVM_CELL280) { return cell280_enable_bsytikchk(1); } else if (model == DEVM_ZH200) { return zh200_enable_bsytikchk(1); } else { return -1; } } int ctn_disable_bsytikchk() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_disable_bsytikchk(1); } else if (model == DEVM_CELL280) { return cell280_disable_bsytikchk(1); } else if (model == DEVM_ZH200) { return zh200_disable_bsytikchk(1); } else { return -1; } } int ctn_get_bsytikchk_en() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_bsytikchk_en(1); } else if (model == DEVM_CELL280) { return cell280_get_bsytikchk_en(1); } else if (model == DEVM_ZH200) { return zh200_get_bsytikchk_en(1); } else { return -1; } } int ctn_get_bsytikchk_from_host() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_bsytikchk_from_host(1); } else if (model == DEVM_CELL280) { return cell280_get_bsytikchk_from_host(1); } else if (model == DEVM_ZH200) { return zh200_get_bsytikchk_from_host(1); } else { return -1; } } int ctn_get_bsytikchk_timeout() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_bsytikchk_timeout(1); } else if (model == DEVM_CELL280) { return cell280_get_bsytikchk_timeout(1); } else if (model == DEVM_ZH200) { return zh200_get_bsytikchk_timeout(1); } else { return -1; } } int ctn_enable_pcs_bsytiksnd() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_enable_pcs_bsytiksnd(1); } else if (model == DEVM_CELL280) { return cell280_enable_pcs_bsytiksnd(1); } else if (model == DEVM_ZH200) { return zh200_enable_pcs_bsytiksnd(1); } else { return -1; } } int ctn_enable_bms_bsytiksnd() { int model = ctn[1].model; if (model == DEVM_ZH200) { return zh200_enable_bms_bsytiksnd(1); } else { return -1; } } int ctn_disable_pcs_bsytiksnd() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_disable_pcs_bsytiksnd(1); } else if (model == DEVM_CELL280) { return cell280_disable_pcs_bsytiksnd(1); } else if (model == DEVM_ZH200) { return zh200_disable_pcs_bsytiksnd(1); } else { return -1; } } int ctn_get_pcs_bsytiksnd_en() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_pcs_bsytiksnd_en(1); } else if (model == DEVM_CELL280) { return cell280_get_pcs_bsytiksnd_en(1); } else if (model == DEVM_ZH200) { return zh200_get_pcs_bsytiksnd_en(1); } else { return -1; } } int ctn_set_socd(double val) { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_set_socd(1, val); } else if (model == DEVM_CELL280) { return cell280_set_socd(1, val); } else if (model == DEVM_ZH200) { return zh200_set_socd(1, val); } else { return -1; } } int ctn_set_socc(double val) { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_set_socc(1, val); } else if (model == DEVM_CELL280) { return cell280_set_socc(1, val); } else if (model == DEVM_ZH200) { return zh200_set_socc(1, val); } else { return -1; } } double ctn_get_socd() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_socd(1); } else if (model == DEVM_CELL280) { return cell280_get_socd(1); } else if (model == DEVM_ZH200) { return zh200_get_socd(1); } else { return 100.0; } } double ctn_get_socc() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_socc(1); } else if (model == DEVM_CELL280) { return cell280_get_socc(1); } else if (model == DEVM_ZH200) { return zh200_get_socc(1); } else { return 0.0; } } int ctn_get_cell_otp() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_cell_otp(1); } else if (model == DEVM_CELL280) { return cell280_get_cell_otp(1); } else if (model == DEVM_ZH200) { return zh200_get_cell_otp(1); } else { return -1; } } int ctn_get_cell_utp() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_get_cell_utp(1); } else if (model == DEVM_CELL280) { return cell280_get_cell_utp(1); } else if (model == DEVM_ZH200) { return zh200_get_cell_utp(1); } else { return -1; } } int ctn_cfg_save_socd() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_cfg_save_socd(1); } else if (model == DEVM_CELL280) { return cell280_cfg_save_socd(1); } else if (model == DEVM_ZH200) { return zh200_cfg_save_socd(1); } else { return -1; } } int ctn_cfg_save_socc() { int model = ctn[1].model; if (model == DEVM_CESS2000) { return cess2000_cfg_save_socc(1); } else if (model == DEVM_CELL280) { return cell280_cfg_save_socc(1); } else if (model == DEVM_ZH200) { return zh200_cfg_save_socc(1); } else { return -1; } } int ctn_get_tool_data(char *buf) { int model = ctn[1].model; char temp_buf[1024 * 10]; sprintf(buf, "" REVERSE " CTN " NONE " model:%s ", ctn[1].szmodel); if (model == DEVM_CESS2000) { memset(temp_buf, 0, sizeof(temp_buf)); cess2000_get_tool_data(1, temp_buf); strcat(buf, temp_buf); return 0; } else if (model == DEVM_CELL280) { memset(temp_buf, 0, sizeof(temp_buf)); cell280_get_tool_data(1, temp_buf); strcat(buf, temp_buf); return 0; } else if (model == DEVM_ZH200) { memset(temp_buf, 0, sizeof(temp_buf)); zh200_get_tool_data(1, temp_buf); strcat(buf, temp_buf); return 0; } else { return -1; } } int ctn_get_cmd() { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_get_cmd(1); return 0; } else if (model == DEVM_CELL280) { cell280_get_cmd(1); return 0; } else if (model == DEVM_ZH200) { zh200_get_cmd(1); return 0; } else { return -1; } } unsigned short ctn_get_cmd_param1() { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_get_cmd_param1(1); return 0; } else { return -1; } } unsigned short ctn_get_cmd_param2() { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_get_cmd_param2(1); return 0; } else { return -1; } } unsigned short ctn_get_cmd_param3() { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_get_cmd_param3(1); return 0; } else { return -1; } } unsigned short ctn_get_cmd_param4() { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_get_cmd_param4(1); return 0; } else { return -1; } } int ctn_set_cmd(int cmd) { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_set_cmd(1, cmd); return 0; } else if (model == DEVM_CELL280) { cell280_set_cmd(1, cmd); return 0; } else if (model == DEVM_ZH200) { zh200_set_cmd(1, cmd); return 0; } else { return -1; } } int ctn_set_cmd_param1(unsigned short param) { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_set_cmd_param1(1, param); return 0; } else { return -1; } } int ctn_set_cmd_param2(unsigned short param) { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_set_cmd_param2(1, param); return 0; } else { return -1; } } int ctn_set_cmd_param3(unsigned short param) { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_set_cmd_param3(1, param); return 0; } else { return -1; } } int ctn_set_cmd_param4(unsigned short param) { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_set_cmd_param4(1, param); return 0; } else { return -1; } } int ctn_set_bsytikchk_from_host(unsigned char tick) { int model = ctn[1].model; if (model == DEVM_CESS2000) { cess2000_set_bsytikchk_from_host(1, tick); return 0; } else if (model == DEVM_CELL280) { cell280_set_bsytikchk_from_host(1, tick); return 0; } else if (model == DEVM_ZH200) { zh200_set_bsytikchk_from_host(1, tick); return 0; } else { return -1; } } char *ctn_get_projid() { return ctn[1].szprojId; } char *ctn_get_dev_id() { int model = ctn[1].model; if (model == DEVM_ZH200) { return zh200_get_devid(1); } else { return NULL; } } int ctn_get_init_data(int ctn_idx, char *buf) { int model = ctn[1].model; if (model == DEVM_ZH200) { return zh200_get_init_data(1, buf); } else { return NULL; } } int ctn_get_tbmqtt_data(char *buf) { int model = ctn[1].model; if (model == DEVM_ZH200) { return zh200_get_tbmqtt_data(1, buf); } else { return NULL; } } static char buf[1024] = {0}; char *ctn_get_hostname() { if (strlen(buf) == 0) { if (gethostname(buf, sizeof(buf)) != 0) { strcpy(buf, "unknown"); } } return buf; }