#include <stdio.h>

extern void softsim_printf(const char *fmt, ...);

int softsim_logic_start(void){

    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);
    char buff[1024];
    int a = 0;
    sprintf(buff, "%x,%x", a,a);

    printf(buff);

    return 0;
}

/*softsim logic exit*/
int softsim_logic_stop(void){

    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);

    return 0;
}

/*softsim plug in*/
int softsim_logic_insert(unsigned char slot){

    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);
    return 0;
}

/*softsim plug out*/
int softsim_logic_remove(unsigned char slot){
    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);
    return 0;
}

int softsim_logic_reset(unsigned char slot){
    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);

    return 0;
}

int softsim_logic_command(unsigned char slot, unsigned char *rx_data, unsigned int rx_size, unsigned char *tx_data, unsigned int *tx_size){
    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);

    return 0;
}

#define show_item(name) \
    if(NULL != name) {  \
        softsim_printf(#name" = %s", name); \
    }else { \
        softsim_printf(#name"= null"); \
    }

int softsim_logic_write_usim(unsigned char slot, char *imsi, char *imsi2, char *iccid, char *msisdn,
            char *pin1, char *puk1, char *pin2, char *puk2, char *ki, char *adm1, char *acc1, char *opc,
                char *roam_country, char *apn, char *spn, char *plmn_list, char *fplmn_list){

    softsim_printf("**Running in softsim-logic-stub: %s**", __func__);

    show_item(imsi);
    show_item(imsi2);
    show_item(iccid);
    show_item(msisdn);
    show_item(pin1);
    show_item(puk1);
    show_item(pin2);
    show_item(puk2);
    show_item(ki);
    show_item(adm1);
    show_item(acc1);
    show_item(opc);
    show_item(roam_country);
    show_item(apn);
    show_item(spn);
    show_item(plmn_list);
    show_item(fplmn_list);

    return 0;
}
