![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Bert Gereels & Dylan Timmerman
i2c_qt1070.cpp@0:620ca2412ef6, 2016-12-14 (annotated)
- Committer:
- bertgereels
- Date:
- Wed Dec 14 13:35:53 2016 +0000
- Revision:
- 0:620ca2412ef6
Capacitive Touch program; by Bert Gereels & Dylan Timmerman
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bertgereels | 0:620ca2412ef6 | 1 | #include "i2c_qt1070.h" |
bertgereels | 0:620ca2412ef6 | 2 | extern "C" void mbed_reset(); |
bertgereels | 0:620ca2412ef6 | 3 | |
bertgereels | 0:620ca2412ef6 | 4 | namespace I2cQt1070Device{ |
bertgereels | 0:620ca2412ef6 | 5 | I2cQt1070::I2cQt1070(PinName sda, PinName scl, int address, int frequency) |
bertgereels | 0:620ca2412ef6 | 6 | : I2CSlave(sda, scl){ |
bertgereels | 0:620ca2412ef6 | 7 | |
bertgereels | 0:620ca2412ef6 | 8 | this->address(address); |
bertgereels | 0:620ca2412ef6 | 9 | this->frequency(frequency); |
bertgereels | 0:620ca2412ef6 | 10 | } |
bertgereels | 0:620ca2412ef6 | 11 | |
bertgereels | 0:620ca2412ef6 | 12 | void I2cQt1070::check_for_instruction(void){ |
bertgereels | 0:620ca2412ef6 | 13 | int addressed = receive(); |
bertgereels | 0:620ca2412ef6 | 14 | switch (addressed) { |
bertgereels | 0:620ca2412ef6 | 15 | case I2CSlave::WriteAddressed:{ |
bertgereels | 0:620ca2412ef6 | 16 | printf("Write addressedd\r\n"); |
bertgereels | 0:620ca2412ef6 | 17 | process_write_request(); |
bertgereels | 0:620ca2412ef6 | 18 | break; |
bertgereels | 0:620ca2412ef6 | 19 | } |
bertgereels | 0:620ca2412ef6 | 20 | case I2CSlave::ReadAddressed:{ |
bertgereels | 0:620ca2412ef6 | 21 | printf("Read addressedd\r\n"); |
bertgereels | 0:620ca2412ef6 | 22 | send_register_to_master(); |
bertgereels | 0:620ca2412ef6 | 23 | break; |
bertgereels | 0:620ca2412ef6 | 24 | } |
bertgereels | 0:620ca2412ef6 | 25 | } |
bertgereels | 0:620ca2412ef6 | 26 | } |
bertgereels | 0:620ca2412ef6 | 27 | |
bertgereels | 0:620ca2412ef6 | 28 | void I2cQt1070::send_register_to_master(void){ |
bertgereels | 0:620ca2412ef6 | 29 | switch(qt1070Address){ |
bertgereels | 0:620ca2412ef6 | 30 | case READ_ID:{ |
bertgereels | 0:620ca2412ef6 | 31 | printf("Received id command\r\n"); |
bertgereels | 0:620ca2412ef6 | 32 | char id = qt1070.getId(); |
bertgereels | 0:620ca2412ef6 | 33 | char buffer[1]; |
bertgereels | 0:620ca2412ef6 | 34 | buffer[0] = id; |
bertgereels | 0:620ca2412ef6 | 35 | write(buffer,1); |
bertgereels | 0:620ca2412ef6 | 36 | break; |
bertgereels | 0:620ca2412ef6 | 37 | } |
bertgereels | 0:620ca2412ef6 | 38 | case READ_FIRMWARE:{ |
bertgereels | 0:620ca2412ef6 | 39 | printf("Received firmware command\r\n"); |
bertgereels | 0:620ca2412ef6 | 40 | char version = qt1070.getFirmware(); |
bertgereels | 0:620ca2412ef6 | 41 | char buffer[1]; |
bertgereels | 0:620ca2412ef6 | 42 | buffer[0] = version; |
bertgereels | 0:620ca2412ef6 | 43 | write(buffer,1); |
bertgereels | 0:620ca2412ef6 | 44 | break; |
bertgereels | 0:620ca2412ef6 | 45 | } |
bertgereels | 0:620ca2412ef6 | 46 | case READ_KEY_STATUS:{ |
bertgereels | 0:620ca2412ef6 | 47 | printf("Received key status command\r\n"); |
bertgereels | 0:620ca2412ef6 | 48 | char status = qt1070.getStatus(); |
bertgereels | 0:620ca2412ef6 | 49 | char buffer[1]; |
bertgereels | 0:620ca2412ef6 | 50 | buffer[0] = status; |
bertgereels | 0:620ca2412ef6 | 51 | write(buffer,1); |
bertgereels | 0:620ca2412ef6 | 52 | break; |
bertgereels | 0:620ca2412ef6 | 53 | } |
bertgereels | 0:620ca2412ef6 | 54 | |
bertgereels | 0:620ca2412ef6 | 55 | case RESET:{ |
bertgereels | 0:620ca2412ef6 | 56 | printf("Received reset command\r\n"); |
bertgereels | 0:620ca2412ef6 | 57 | mbed_reset(); |
bertgereels | 0:620ca2412ef6 | 58 | stop(); |
bertgereels | 0:620ca2412ef6 | 59 | break; |
bertgereels | 0:620ca2412ef6 | 60 | } |
bertgereels | 0:620ca2412ef6 | 61 | default:{ |
bertgereels | 0:620ca2412ef6 | 62 | printf("Unknown command byte recieved from master\r\n"); |
bertgereels | 0:620ca2412ef6 | 63 | } |
bertgereels | 0:620ca2412ef6 | 64 | } |
bertgereels | 0:620ca2412ef6 | 65 | } |
bertgereels | 0:620ca2412ef6 | 66 | |
bertgereels | 0:620ca2412ef6 | 67 | int I2cQt1070::process_write_request(void){ |
bertgereels | 0:620ca2412ef6 | 68 | char nextQt1070Address = this->read(); |
bertgereels | 0:620ca2412ef6 | 69 | this->qt1070Address = nextQt1070Address; |
bertgereels | 0:620ca2412ef6 | 70 | this->stop(); |
bertgereels | 0:620ca2412ef6 | 71 | } |
bertgereels | 0:620ca2412ef6 | 72 | |
bertgereels | 0:620ca2412ef6 | 73 | }; |