Beispiel #1
0
uint8_t *read_sms_raw_bytes(int type, int *size)
{
    int kernFunc;
    char *servMatch;
    int dataType;
    uint8_t *data;
    int t;

    data = malloc(sizeof(union motion_data));
    if ( data == 0 )
        return 0;

    t = type;
    if ( t == 0 ) {
        int i;

        for ( i = 1; ; i++ ) {
            if ( !set_values(i, &kernFunc, &servMatch, &dataType) )
                break;
            if ( probe_sms(kernFunc, servMatch, dataType, data) ) {
                t = i;
                break;
            }
        }
    } else {
        if ( !set_values(type, &kernFunc, &servMatch, &dataType) )
            return 0;
        if ( !probe_sms(kernFunc, servMatch, dataType, data) )
            return 0;
    }

    if ( t ) {
        switch ( dataType ) {
            case PB_IB:
                if ( size )
                    *size = sizeof(struct pb_ib_data);
                break;
            case MBP:
                if ( size )
                    *size = sizeof(struct mbp_data);
                break;
            default:
                t = 0;
                break;
        }
        if ( t )
            return data;
    }
    free(data);
    if ( size )
        *size = 0;
    return 0;
}
Beispiel #2
0
int read_sms_raw(int type, int *x, int *y, int *z)
{
    int kernFunc;
    char *servMatch;
    int dataType;
    union motion_data data;

    if ( !set_values(type, &kernFunc, &servMatch, &dataType) )
        return 0;
    if ( probe_sms(kernFunc, servMatch, dataType, &data) ) {
        switch ( dataType ) {
            case PB_IB:
                if ( x ) *x = data.pb_ib.x;
                if ( y ) *y = data.pb_ib.y;
                if ( z ) *z = data.pb_ib.z;
                break;
            case MBP:
                if ( x ) *x = data.mbp.x;
                if ( y ) *y = data.mbp.y;
                if ( z ) *z = data.mbp.z;
                break;
            default:
                return 0;
        }
        return 1;
    }
    return 0;
}
Beispiel #3
0
int detect_sms()
{
    int kernFunc;
    char *servMatch;
    int dataType;
    union motion_data data;
    int i;

    for ( i = 1; ; i++ ) {
        if ( !set_values(i, &kernFunc, &servMatch, &dataType) )
            break;
        if ( probe_sms(kernFunc, servMatch, dataType, &data) )
            return i;
    }

    return unknown;
}