Exemple #1
0
ssize_t qmi_ctl_update_cid(struct qmi_device *qmid, uint8_t service,
        bool release, uint8_t cid){
    uint8_t buf[QMI_DEFAULT_BUF_SIZE];
    qmux_hdr_t *qmux_hdr = (qmux_hdr_t*) buf;
    uint16_t message_id = release ? QMI_CTL_RELEASE_CID : QMI_CTL_GET_CID;
    //TODO: Perhaps make this nicer, sinceit is only used in one case
    uint16_t tlv_value = htole16((cid << 8) | service);
    ssize_t retval = 0;

    create_qmi_request(buf, QMI_SERVICE_CTL, 0, qmid->ctl_transaction_id,
            message_id);

    if(qmid_verbose_logging >= QMID_LOG_LEVEL_2){
        if(release)
            QMID_DEBUG_PRINT(stderr, "Releasing CID %x for service %x\n",
                    cid, service);
        else
            QMID_DEBUG_PRINT(stderr, "Requesting CID for service %x\n",
                    service);
    }

    if(release)
        add_tlv(buf, QMI_CTL_TLV_ALLOC_INFO, sizeof(uint16_t), &tlv_value);
    else
        add_tlv(buf, QMI_CTL_TLV_ALLOC_INFO, sizeof(uint8_t), &service);

    retval = qmi_ctl_write(qmid, buf, le16toh(qmux_hdr->length));

    if(retval <= 0)
        if(qmid_verbose_logging >= QMID_LOG_LEVEL_1)
            QMID_DEBUG_PRINT(stderr, "Failed to send request for CID for %x\n",
                    service);

    return retval;
}
Exemple #2
0
ssize_t qmi_ctl_send_data_format(struct qmi_device *qmid){
    uint8_t buf[QMI_DEFAULT_BUF_SIZE];
    qmux_hdr_t *qmux_hdr = (qmux_hdr_t*) buf;

	//Values fetched from windows_telenor_qmi
	uint8_t format = 0;
	uint16_t proto = htole16(0x0001);

    if(qmid_verbose_logging >= QMID_LOG_LEVEL_2)
        QMID_DEBUG_PRINT(stderr, "Seding set data format request\n");

    create_qmi_request(buf, QMI_SERVICE_CTL, 0, qmid->ctl_transaction_id,
            QMI_CTL_SET_DATA_FORMAT);
	add_tlv(buf, QMI_CTL_TLV_DATA_FORMAT, sizeof(uint8_t), &format);
	add_tlv(buf, QMI_CTL_TLV_DATA_PROTO, sizeof(uint16_t), &proto);

    return qmi_ctl_write(qmid, buf, le16toh(qmux_hdr->length));
}
Exemple #3
0
/* open configuration file to read wlan setting parameters
 */
int mib_get_object(char * path, struct wps_data *data, const struct mib_param_set * mibsets)
{
    char fname[] = APAC_CONF_FILE_PATH;
    const struct mib_param_set * mibset;	
    FILE *f;
    char mibpath[256];
    char buf[256];
    char *tag;
    char *value;
    int  param_num = 0;

    /*Open config file*/
    f = fopen(fname, "r");
    if (f == NULL) {
        dprintf(MSG_ERROR, "%s, couldn't open configuration file: '%s'. \n", fname);
        return -1;
    }

    /*get the line from config file by path and name,
    and copy value string*/
    while (fgets(buf, sizeof(buf), f) != NULL) {
        tag = apac_config_line_lex(buf, &value);
        
        if (tag == NULL || *tag == 0) {
            continue;
        }
            
        mibset = mibsets; 	
        while(mibset && mibset->name) {
            struct wps_tlv *tlv;
            
            sprintf(mibpath, "%s.%s", path, mibset->name); 
            
            if (strcmp(mibpath, tag) == 0) {
                if(mib_get_tlv(mibset, value ,& tlv) < 0)
                {
                    dprintf(MSG_ERROR, "Fails: Path [%s], value [%s]\n", path, value);
                    break;
                }
                
                add_tlv(data,  tlv);
                param_num ++;
                break;
            }
            mibset ++;
        }
    }

    /*Close config file*/
    fclose(f);

    if (param_num > 0)
        return 0;
    else
        return -1;
}