#include "pcs_business_adapter.h"
#include <string.h>
#include "def_business_adapter.h"
#include "../business_log/business_log.h"
#include "../common.h"

pcs_business_adapter *all_adp[] = {&def_pcs_adp};

pcs_business_adapter *p_cur_business = NULL;

int pcs_business_init(void)
{
    const char *cur_use_name = "def";
    char *date = read_file_data("/app/config/custom_pcs_bus_cfg.json");
    if (date != NULL)
    {
        cJSON *cfg = cJSON_Parse(date);
        if (cfg != NULL)
        {
            cJSON *name = cJSON_GetObjectItemCaseSensitive(cfg, "name");
            if (name != NULL)
            {
                cur_use_name = name->valuestring;
            }
        }
    }

    for (int i = 0; i < sizeof(all_adp) / sizeof(pcs_business_adapter *); i++)
    {
        if (strcmp(all_adp[i]->name, cur_use_name) == 0)
        {
            p_cur_business = all_adp[i];
            BUSINESS_LOG(BLOG_NOTICE, PCS_BUS_ID_0003, NULL, "PCS业务[%s]初始化成功", cur_use_name);
            return 0;
        }
    }
    BUSINESS_LOG(BLOG_NOTICE, PCS_BUS_ID_0003, NULL, "PCS业务[%s]初始化失败", cur_use_name);
    return -1;
}

int pcs_business_initset_onoff(int onoff)
{
    if (p_cur_business != NULL)
    {
        return p_cur_business->set_onoff(p_cur_business, onoff);
    }
    else
    {
        return -1;
    }
}
int pcs_business_init_set_connect(int connect)
{
    if (p_cur_business != NULL)
    {
        return p_cur_business->set_connect(p_cur_business, connect);
    }
    else
    {
        return -1;
    }
}
