Local library

Dependencies:   WakeUp PinDetect

Dependents:   Inductive_Sensor Inductive_Sensor_Jasper Inductive_Sensor_3

Committer:
bobgiesberts
Date:
Wed Sep 21 14:23:19 2016 +0000
Revision:
9:3fe744aca1c0
Parent:
7:0b23995256e7
Libraries loaded in .h (and not double in .cpp)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bobgiesberts 0:17943815800f 1 /**
bobgiesberts 0:17943815800f 2 * @file Bob.cpp
bobgiesberts 6:0e7c0ad0508b 3 * @brief just some functions to communicate with the
bobgiesberts 6:0e7c0ad0508b 4 * processor board for the LDC1614
bobgiesberts 0:17943815800f 5 *
bobgiesberts 0:17943815800f 6 * @author Bob Giesberts
bobgiesberts 0:17943815800f 7 *
bobgiesberts 6:0e7c0ad0508b 8 * @date 2016-08-24
bobgiesberts 0:17943815800f 9 */
bobgiesberts 0:17943815800f 10
bobgiesberts 0:17943815800f 11 #include "Bob.h"
bobgiesberts 9:3fe744aca1c0 12
bobgiesberts 0:17943815800f 13
bobgiesberts 2:681ecede6dcb 14
bobgiesberts 6:0e7c0ad0508b 15 void keyPressed( void )
bobgiesberts 6:0e7c0ad0508b 16 {
bobgiesberts 6:0e7c0ad0508b 17 // do something
bobgiesberts 6:0e7c0ad0508b 18 debug( "button pressed\r\n" );
bobgiesberts 6:0e7c0ad0508b 19 }
bobgiesberts 6:0e7c0ad0508b 20
bobgiesberts 6:0e7c0ad0508b 21
bobgiesberts 6:0e7c0ad0508b 22
bobgiesberts 7:0b23995256e7 23 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)
bobgiesberts 0:17943815800f 24 {
bobgiesberts 6:0e7c0ad0508b 25 // setup leds
bobgiesberts 6:0e7c0ad0508b 26 _led_process = 0; // green
bobgiesberts 6:0e7c0ad0508b 27 _led_error = 0; // red
bobgiesberts 5:c2468a69aacb 28
bobgiesberts 6:0e7c0ad0508b 29 // setup I/O button
bobgiesberts 6:0e7c0ad0508b 30 _button.mode( PullUp );
bobgiesberts 6:0e7c0ad0508b 31 wait_ms(1);
bobgiesberts 6:0e7c0ad0508b 32 _button.attach_asserted( &keyPressed );
bobgiesberts 6:0e7c0ad0508b 33 _button.setSampleFrequency();
bobgiesberts 2:681ecede6dcb 34
bobgiesberts 6:0e7c0ad0508b 35 // setup SD card system
bobgiesberts 2:681ecede6dcb 36 _sd_card_detect = new DigitalIn( sd_present );
bobgiesberts 2:681ecede6dcb 37 _sd_card_detect->mode( PullUp );
bobgiesberts 0:17943815800f 38
bobgiesberts 6:0e7c0ad0508b 39 // setup battery
bobgiesberts 2:681ecede6dcb 40 _batt = new AnalogIn( battery );
bobgiesberts 2:681ecede6dcb 41
bobgiesberts 0:17943815800f 42 }
bobgiesberts 0:17943815800f 43
bobgiesberts 6:0e7c0ad0508b 44 Bob::~Bob() {}
bobgiesberts 6:0e7c0ad0508b 45
bobgiesberts 6:0e7c0ad0508b 46
bobgiesberts 6:0e7c0ad0508b 47
bobgiesberts 0:17943815800f 48 bool Bob::checkSD(void)
bobgiesberts 0:17943815800f 49 {
bobgiesberts 7:0b23995256e7 50 // TODO: this should first check if _enable is on. if not, return false either way!
bobgiesberts 7:0b23995256e7 51
bobgiesberts 7:0b23995256e7 52 _enable.write(1);
bobgiesberts 7:0b23995256e7 53 wait_ms(3);
bobgiesberts 2:681ecede6dcb 54 return !_sd_card_detect->read();
bobgiesberts 2:681ecede6dcb 55 }
bobgiesberts 2:681ecede6dcb 56
bobgiesberts 7:0b23995256e7 57 void Bob::wakeup_periphery(void)
bobgiesberts 2:681ecede6dcb 58 {
bobgiesberts 7:0b23995256e7 59 _enable.write(1); // power SD-card
bobgiesberts 7:0b23995256e7 60 wait_ms(3);
bobgiesberts 4:9c3c8eb56a2b 61 // wait(0.3); // this shouldn't be necessary because loading the LDC library already takes 0.81 s
bobgiesberts 0:17943815800f 62 }
bobgiesberts 0:17943815800f 63
bobgiesberts 7:0b23995256e7 64 void Bob::shutdown_periphery(void)
bobgiesberts 3:68c005d410e1 65 {
bobgiesberts 7:0b23995256e7 66 _enable.write(0);
bobgiesberts 3:68c005d410e1 67 }
bobgiesberts 3:68c005d410e1 68
bobgiesberts 9:3fe744aca1c0 69 void Bob::shutdown_pin(PinName pin, int value, PinMode pull )
bobgiesberts 9:3fe744aca1c0 70 {
bobgiesberts 9:3fe744aca1c0 71 if( value == 1 )
bobgiesberts 9:3fe744aca1c0 72 {
bobgiesberts 9:3fe744aca1c0 73 DigitalInOut *_pin = new DigitalInOut( pin );
bobgiesberts 9:3fe744aca1c0 74 _pin->output();
bobgiesberts 9:3fe744aca1c0 75 _pin->mode( pull );
bobgiesberts 9:3fe744aca1c0 76 _pin->write( value );
bobgiesberts 9:3fe744aca1c0 77 delete _pin;
bobgiesberts 9:3fe744aca1c0 78 _pin = NULL;
bobgiesberts 9:3fe744aca1c0 79 }else{
bobgiesberts 9:3fe744aca1c0 80 DigitalOut *_pin = new DigitalOut( pin );
bobgiesberts 9:3fe744aca1c0 81 _pin->write( value );
bobgiesberts 9:3fe744aca1c0 82 delete _pin;
bobgiesberts 9:3fe744aca1c0 83 _pin = NULL;
bobgiesberts 9:3fe744aca1c0 84 }
bobgiesberts 9:3fe744aca1c0 85 }
bobgiesberts 9:3fe744aca1c0 86
bobgiesberts 4:9c3c8eb56a2b 87 void Bob::sleep(uint32_t ms)
bobgiesberts 3:68c005d410e1 88 {
bobgiesberts 4:9c3c8eb56a2b 89 WakeUp::calibrate(); // calibration takes 100 ms
bobgiesberts 4:9c3c8eb56a2b 90 WakeUp::set_ms( ms - 100 ); // substract this from the total sleep time
bobgiesberts 4:9c3c8eb56a2b 91 deepsleep();
bobgiesberts 3:68c005d410e1 92 }
bobgiesberts 1:2234e0b31d94 93
bobgiesberts 2:681ecede6dcb 94 // battery voltage should be 3.1V (min) < 3.7V (typ) < 4.22V (max)
bobgiesberts 2:681ecede6dcb 95 float Bob::battery(void)
bobgiesberts 2:681ecede6dcb 96 {
bobgiesberts 2:681ecede6dcb 97 return (float)_batt->read() * 3.0 * 2.0;
bobgiesberts 2:681ecede6dcb 98 }
bobgiesberts 2:681ecede6dcb 99
bobgiesberts 9:3fe744aca1c0 100 void Bob::flash( int n, int led )
bobgiesberts 0:17943815800f 101 {
bobgiesberts 9:3fe744aca1c0 102 if( led == 0 || led == 1 ) _led_process = 0;
bobgiesberts 9:3fe744aca1c0 103 if( led == 0 || led == 2 ) _led_error = 0;
bobgiesberts 0:17943815800f 104 for(int i=0; i<n*2; i++){
bobgiesberts 9:3fe744aca1c0 105 if( led == 0 || led == 1 ) _led_process = 1-_led_process;
bobgiesberts 9:3fe744aca1c0 106 if( led == 0 || led == 2 ) _led_error = 1-_led_error;
bobgiesberts 5:c2468a69aacb 107 wait(0.2);
bobgiesberts 0:17943815800f 108 }
bobgiesberts 0:17943815800f 109 }
bobgiesberts 0:17943815800f 110
bobgiesberts 9:3fe744aca1c0 111 void Bob::processing( int n)
bobgiesberts 9:3fe744aca1c0 112 {
bobgiesberts 9:3fe744aca1c0 113 if( n == 0 ) {
bobgiesberts 9:3fe744aca1c0 114 _led_process = 1;
bobgiesberts 9:3fe744aca1c0 115 }else{
bobgiesberts 9:3fe744aca1c0 116 _led_process = 0;
bobgiesberts 9:3fe744aca1c0 117 flash( n, 1 );
bobgiesberts 9:3fe744aca1c0 118 wait(0.8);
bobgiesberts 9:3fe744aca1c0 119 }
bobgiesberts 9:3fe744aca1c0 120 }
bobgiesberts 7:0b23995256e7 121 void Bob::no_processing(void) { _led_process = 0; }
bobgiesberts 7:0b23995256e7 122
bobgiesberts 9:3fe744aca1c0 123 void Bob::error( int n )
bobgiesberts 9:3fe744aca1c0 124 {
bobgiesberts 9:3fe744aca1c0 125 if( n == 0 ) {
bobgiesberts 9:3fe744aca1c0 126 _led_error = 1;
bobgiesberts 9:3fe744aca1c0 127 }else{
bobgiesberts 9:3fe744aca1c0 128 _led_error = 0;
bobgiesberts 9:3fe744aca1c0 129 flash( n, 2 );
bobgiesberts 9:3fe744aca1c0 130 wait(0.8);
bobgiesberts 9:3fe744aca1c0 131 }
bobgiesberts 9:3fe744aca1c0 132 }
bobgiesberts 7:0b23995256e7 133 void Bob::no_error(void) { _led_error = 0; }