Пример #1
0
// TODO: Need to call the algorithm to unsubscribe the sensor
static void SensorDisable(ASensorType_t sen)
{
    int v = (int)sen;
    int set;

    if (v < 32) {
        set = (1<<v);
        SensorState[0] &= ~set;
    } else {
        set = (1<<(v-32));
        SensorState[1] &= ~set;
    }

    // Why hardcode this sensor?
    SensorState[0] |= 1 << SENSOR_SIGNIFICANT_MOTION;

    // Now un-subscribe this sensor from the algorithm
    Algorithm_UnsubscribeSensor(sen);
}
Пример #2
0
void DebugTestSensorSubscription(void)
{
    osp_bool_t privateSensor = FALSE;
    uint32_t mask;

    if ( (subscribeSensorReq == -1)  && (unsubscribeSensorReq == -1 ) )
        return;

    if ( subscribeSensorReq  != -1 ) {
        // Handle subscription
        privateSensor = IsPrivateAndroidSensor(subscribeSensorReq);
        if ( privateSensor ) {
            int PSensor = M_AndroidToPSensorBase(subscribeSensorReq);
            mask =  0x1UL << PSensor;

            if ( _subscribedPrivateSensors & mask ) {
                D0_printf("\n%s: Requested Sensor 0x%x already subscribed\r\n", __FUNCTION__, subscribeSensorReq);
                subscribeSensorReq = -1; //reset flag
                return;   // already subscribed
            } else {
                // update private subscription bit mask
                _subscribedPrivateSensors |= mask;
            }
        } else {
            mask = 0x1UL << subscribeSensorReq;

            if ( _subscribedAndroidSensors & mask ) {
                D0_printf("\n%s: Requested Sensor 0x%x already subscribed\r\n", __FUNCTION__, subscribeSensorReq);
                subscribeSensorReq = -1; //reset flag
                return;   // already subscribed
            } else {
                // update android subscription bit mask
                _subscribedAndroidSensors |= mask;
            }
        }

        // Now subscribe the sensor
        Algorithm_SubscribeSensor( (ASensorType_t) subscribeSensorReq);
        subscribeSensorReq = -1; //reset flag
    }

    // Handle un-subscription request
    if ( unsubscribeSensorReq  != -1 ) {
        // handle unsubscription
        uint32_t mask;
        privateSensor = IsPrivateAndroidSensor(unsubscribeSensorReq);

        if ( privateSensor ) {
            int PSensor = M_AndroidToPSensorBase(unsubscribeSensorReq);
            mask  = 0x1UL << PSensor ;

            if ( !(_subscribedPrivateSensors & mask) ) {
                D0_printf("\n%s: Requested sensor 0x%x is not subscribed\r\n", __FUNCTION__, unsubscribeSensorReq);
                unsubscribeSensorReq = -1; //reset flag
                return;   // Sensor is not currently subscribed so cannot un-subscribe
            } else {
                _subscribedPrivateSensors &= ~mask;    // clear the subscription bit mask
            }
        } else {
            mask = 0x1 << unsubscribeSensorReq;
            if ( !(_subscribedAndroidSensors & mask) ) {
                D0_printf("\n%s: Requested sensor 0x%x is not subscribed\r\n", __FUNCTION__, unsubscribeSensorReq);
                unsubscribeSensorReq = -1;
                return;
            } else {
                _subscribedAndroidSensors &= ~mask;    // clear the subscription bit mask
            }
        }

        // Now un-subscribe the sensor
        Algorithm_UnsubscribeSensor((ASensorType_t) unsubscribeSensorReq);
        unsubscribeSensorReq = -1; // reset flag
    }

    D0_printf("SensorsSubscribed PrivateSensor = 0x%x, AndroidSensor = 0x%x\r\n", _subscribedPrivateSensors, _subscribedAndroidSensors);
}