sensor lib

Dependents:   gather_sensor_data

SENSOR.cpp

Committer:
readysteadygo2006
Date:
2016-09-08
Revision:
0:cbe8cd32b8d9

File content as of revision 0:cbe8cd32b8d9:

#include "SENSOR.h"


SENSOR::SENSOR (
    PinName io_pin_name1, 
    PinName io_pin_name2, 
    PinName io_pin_name3, 
    PinName io_pin_name4,
    PinName io_pin_name5, 
    PinName sense_pin_name1
): sense_pin1(sense_pin_name1) {
    io_type = NONE;
    io_pname1 = io_pin_name1;
    io_pname2 = io_pin_name2;
    io_pname3 = io_pin_name3;
    io_pname4 = io_pin_name4;
    io_pname5 = io_pin_name5;
    sense_pname1 = sense_pname1;
}


SENSOR::~SENSOR() {
    io_type = NONE;
    io_pname1 = NC;
    io_pname2 = NC;
    io_pname3 = NC;
    io_pname4 = NC;
    io_pname5 = NC;
    sense_pname1 = NC;
}


sensorType SENSOR::detectSensorType() {
    return NO_SENSOR;
}

sensorType SENSOR::getSensorType() {
    return sensor_type;
}

sensorStatus SENSOR::getSensorStatus() {
    return sensor_status;
}

sensorType SENSOR::detectSensor() {
    sensor_type = detectSensorType();
    sensor_type = detectSensor(sensor_type);
    return sensor_type;
}

sensorType SENSOR::detectSensor(sensorType stype) {

    //Set sensor_type
    sensor_type = stype;
    
    //handle detected sensor
    switch (stype) {
        case DS1820_SENSOR:
            ds1820_sensor_ptr = new DS1820Sensor(io_pname1);
            break;
        case DHT11_SENSOR:
            dht11_sensor_ptr = new DHTSensor(io_pname1, DHT11);            
            break;
        case DHT22_SENSOR:
            dht22_sensor_ptr = new DHTSensor(io_pname1, DHT22);            
            break;
        case ML8511_SENSOR:
            ml8511_sensor_ptr = new ML8511Sensor(io_pname5);            
            break;
        case MQ135_SENSOR:
            mq135_sensor_ptr = new MQ135Sensor(io_pname5);            
            break;
        case BH1750_SENSOR:
//            bh1750_sensor_ptr = new BH1750Sensor(io_pname1, io_pname2);            
            bh1750_sensor_ptr = new BH1750Sensor(io_pname1, io_pname2);            
            break;
        case UNSUPPORTED_SENSOR:
            sensor_status = SENSOR_DETECTION_ERROR;
            return(sensor_type);
            break;
        case NO_SENSOR:
            sensor_status = SENSOR_UNCONNECTED;
            return(sensor_type);
            break;
        default: 
//            printf("Error, should not get here!\r\n");
            break;
    }

    sensor_status = SENSOR_CONNECTED;           
    return sensor_type;
}

sensorStatus SENSOR::readSensor(string &sensor_reading) {
    sensorStatus status;
    switch (sensor_type) {
         case DS1820_SENSOR:
            status = ds1820_sensor_ptr->readSensor(sensor_reading);
            break;
        case DHT11_SENSOR:
            status = dht11_sensor_ptr->readSensor(sensor_reading);
            break;
        case DHT22_SENSOR:
            status = dht22_sensor_ptr->readSensor(sensor_reading);
            break;
        case ML8511_SENSOR:
            status = ml8511_sensor_ptr->readSensor(sensor_reading);
            break;
        case MQ135_SENSOR:
            status = mq135_sensor_ptr->readSensor(sensor_reading);
            break;
        case BH1750_SENSOR:
            status = bh1750_sensor_ptr->readSensor(sensor_reading);
            break;
        case UNSUPPORTED_SENSOR:
            sensor_status = SENSOR_TYPE_UNSUPPORTED; 
            sensor_reading = "";   
            return(sensor_status);
            break;
        case NO_SENSOR:
            sensor_status = SENSOR_UNCONNECTED;
            sensor_reading = "";   
            return(sensor_status);
            break;
        default: 
//            printf("Error, should not get here!\r\n");
            break;
    }

    return status;
}