Local library
Dependencies: WakeUp PinDetect
Dependents: Inductive_Sensor Inductive_Sensor_Jasper Inductive_Sensor_3
Bob.cpp
- Committer:
- bobgiesberts
- Date:
- 2016-09-21
- Revision:
- 9:3fe744aca1c0
- Parent:
- 7:0b23995256e7
File content as of revision 9:3fe744aca1c0:
/** * @file Bob.cpp * @brief just some functions to communicate with the * processor board for the LDC1614 * * @author Bob Giesberts * * @date 2016-08-24 */ #include "Bob.h" void keyPressed( void ) { // do something debug( "button pressed\r\n" ); } Bob::Bob(PinName process_led, PinName error_led, PinName button, PinName enable, PinName sd_present, PinName battery) : _led_process(process_led), _led_error(error_led), _button(button), _enable(enable) { // setup leds _led_process = 0; // green _led_error = 0; // red // setup I/O button _button.mode( PullUp ); wait_ms(1); _button.attach_asserted( &keyPressed ); _button.setSampleFrequency(); // setup SD card system _sd_card_detect = new DigitalIn( sd_present ); _sd_card_detect->mode( PullUp ); // setup battery _batt = new AnalogIn( battery ); } Bob::~Bob() {} bool Bob::checkSD(void) { // TODO: this should first check if _enable is on. if not, return false either way! _enable.write(1); wait_ms(3); return !_sd_card_detect->read(); } void Bob::wakeup_periphery(void) { _enable.write(1); // power SD-card wait_ms(3); // wait(0.3); // this shouldn't be necessary because loading the LDC library already takes 0.81 s } void Bob::shutdown_periphery(void) { _enable.write(0); } void Bob::shutdown_pin(PinName pin, int value, PinMode pull ) { if( value == 1 ) { DigitalInOut *_pin = new DigitalInOut( pin ); _pin->output(); _pin->mode( pull ); _pin->write( value ); delete _pin; _pin = NULL; }else{ DigitalOut *_pin = new DigitalOut( pin ); _pin->write( value ); delete _pin; _pin = NULL; } } void Bob::sleep(uint32_t ms) { WakeUp::calibrate(); // calibration takes 100 ms WakeUp::set_ms( ms - 100 ); // substract this from the total sleep time deepsleep(); } // battery voltage should be 3.1V (min) < 3.7V (typ) < 4.22V (max) float Bob::battery(void) { return (float)_batt->read() * 3.0 * 2.0; } void Bob::flash( int n, int led ) { if( led == 0 || led == 1 ) _led_process = 0; if( led == 0 || led == 2 ) _led_error = 0; for(int i=0; i<n*2; i++){ if( led == 0 || led == 1 ) _led_process = 1-_led_process; if( led == 0 || led == 2 ) _led_error = 1-_led_error; wait(0.2); } } void Bob::processing( int n) { if( n == 0 ) { _led_process = 1; }else{ _led_process = 0; flash( n, 1 ); wait(0.8); } } void Bob::no_processing(void) { _led_process = 0; } void Bob::error( int n ) { if( n == 0 ) { _led_error = 1; }else{ _led_error = 0; flash( n, 2 ); wait(0.8); } } void Bob::no_error(void) { _led_error = 0; }