Local library
Dependencies: WakeUp PinDetect
Dependents: Inductive_Sensor Inductive_Sensor_Jasper Inductive_Sensor_3
Bob.cpp@9:3fe744aca1c0, 2016-09-21 (annotated)
- 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?
User | Revision | Line number | New 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; } |