Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SoftSerial SDFileSystem mbed wave_player
Relay.cpp
- Committer:
- Desertification
- Date:
- 2017-05-16
- Revision:
- 25:d28cfa47ff46
- Parent:
- 24:d91e9b3b5bd5
- Child:
- 29:c2d95d88ee0b
File content as of revision 25:d28cfa47ff46:
// // Created by thoma on 16-May-17. // #include "Relay.h" Relay::Relay(PinName tx_luart, int baudrate_luart, PinName tx_usb, PinName rx_usb, int baudrate_usb) : softSerial(tx_luart,NC), usb(tx_usb,rx_usb,baudrate_usb) { softSerial.baud(baudrate_luart); } void Relay::run() { while(true){ handle_type(); } } void Relay::set_volume(){ while (!usb.readable()); int volume = usb.getc(); while(!softSerial.writeable()); softSerial.putc(volume); while (!usb.writeable()); usb.putc(ACK); } void Relay::send_file(){ // get file size int size = 0; for (int i = 0; i < 4; ++i) { while (!usb.readable()); int b = usb.getc(); while(!softSerial.writeable()); softSerial.putc(b); size |= b << ((3-i) << 3); } // send data int j = 0; while(j < size){ // get max 64 bytes int k = 0; for (k; k < 64; ++k) { if(j == size){ break; } while (!usb.readable()); int b = usb.getc(); buffer[k] = b; j++; } // send max 64 bytes int m = 0; for (m; m < k; ++m) { while (!softSerial.writeable()); softSerial.putc(buffer[m]); } // request new bytes from rpi while (!usb.writeable()); usb.putc(ACK); } } void Relay::handle_type() { while (!usb.readable()); int packet_type = usb.getc(); while(!softSerial.writeable()); softSerial.putc(packet_type); while (!usb.writeable()); usb.putc(ACK); switch (packet_type){ case SET_VOLUME: set_volume(); break; case SEND_FILE: send_file(); break; default: break; } }