Arch GPRS V2 HW Library Created from the Arch GPRS HW DEMO

Dependents:   roam_v2 finalV1 finalV1 finalv2 ... more

ARCH_GPRS_V2_HW.cpp

Committer:
labishrestha
Date:
2014-12-02
Revision:
0:d3d48514a2aa

File content as of revision 0:d3d48514a2aa:

/*
  IOT_hw.cpp
  2013 Copyright (c) Seeed Technology Inc.  All right reserved.

  Author:Loovee
  2013-7-21

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include "mbed.h"
#include "ARCH_GPRS_V2_HW.h"
#include "ARCH_GPRS_V2_HW_DFS.h"

DigitalOut sim900_pwr(PINPWR);
DigitalOut sim900_on(PINONOFF);

DigitalOut led1(PINLED1);
DigitalOut led2(PINLED2);
DigitalOut led3(PINLED3);
DigitalOut led4(PINLED4);

DigitalOut grove_pwr(GROVE_PWR);
DigitalIn  charging(PIN_CHRGING);
DigitalIn  chargdone(PIN_CHRGDONE);

Serial sim900uart(PINTX, PINRX, "SIM900");

AnalogIn vol_bat(PIN_READBAT);

void IOT_HW::SIM900_PWRON()
{
    sim900_pwr = 0;
}

void IOT_HW::SIM900_PWROFF()
{
    sim900_pwr = 1;
}

void IOT_HW::SIM900_ON()
{
    sim900_on = 0;
    wait(2);
    sim900_on = 1;
}

int IOT_HW::init()
{
    init_io();
    SIM900_PWROFF();
    wait(2);                // wait 2s
    SIM900_PWRON();
    SIM900_PWRON();
    SIM900_ON();
    return 1;
}

void IOT_HW::init_io()
{
    sim900_pwr = 1;
    sim900_on  = 1;
}

void IOT_HW::sendCommand(char * command)
{
    sim900uart.printf(command);
}

void IOT_HW::hangup()
{
    sim900uart.printf("ATH;");
}

//int IOT_HW::getSIM900_State()
//{
//   sim900_state.input();
//    sim900_state.mode(PullDown);
//    if(sim900_state.read())
//   {
//        return 1;
//    }
//    return 0;
//}

void IOT_HW::SIM900StateLed(unsigned char state)
{
    //sim900_state.output();
    //sim900_state = 1-state;
}

void IOT_HW::userLed(unsigned char led, unsigned char state)
{
    //    if(state!=0 || state!=1)return;

    if(1==led)led1 = state;
    else if(2==led)led2 = state;
    else if(3==led)led3 = state;
    else if(4==led)led4 = state;

}

int IOT_HW::readChrgState()
{
    if(!charging.read())return CHRGDONE;
    if(!chargdone.read())return CHRGING;
    return NOCHRG;
}

float IOT_HW::readBatVol()
{
    unsigned int tmp = vol_bat.read_u16();
    
        //return tmp;
    float dr = tmp;
    dr = dr/65536.0*3.3*2.0;
    return dr;
    // return ((float tmp)/65536.0*3.3*2.0);
}

void IOT_HW::grovePwrOn()
{
    grove_pwr = 0;
}

void IOT_HW::grovePwrOff()
{
    grove_pwr = 1;
}

IOT_HW iot_hw;
/*********************************************************************************************************
  END FILE
*********************************************************************************************************/