2017 hongo b team

Dependents:   I2C_slave

Committer:
Komazawa_sun
Date:
Fri Sep 08 08:43:32 2017 +0000
Revision:
1:946468f68668
Parent:
0:4eb718005c1b
???;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Komazawa_sun 0:4eb718005c1b 1 #include "ApprI2CSlave.h"
Komazawa_sun 0:4eb718005c1b 2
Komazawa_sun 0:4eb718005c1b 3 ApprI2CSlave::ApprI2CSlave(alpha_a::ID my_id_, alpha_a::f_type my_type_, int addr_, I2CSlave *slave_)
Komazawa_sun 0:4eb718005c1b 4 {
Komazawa_sun 0:4eb718005c1b 5 _my_id = my_id_;
Komazawa_sun 0:4eb718005c1b 6 _my_type = my_type_;
Komazawa_sun 0:4eb718005c1b 7 _slave = slave_;
Komazawa_sun 0:4eb718005c1b 8 _slave->address(addr_);
Komazawa_sun 1:946468f68668 9 res_data = 0;
Komazawa_sun 0:4eb718005c1b 10 }
Komazawa_sun 0:4eb718005c1b 11
Komazawa_sun 0:4eb718005c1b 12 void ApprI2CSlave::write(uint8_t data)
Komazawa_sun 0:4eb718005c1b 13 {
Komazawa_sun 0:4eb718005c1b 14 char data_array[3] = {};
Komazawa_sun 0:4eb718005c1b 15
Komazawa_sun 0:4eb718005c1b 16 data_array[0] = _my_id;
Komazawa_sun 0:4eb718005c1b 17 data_array[1] = _my_type;
Komazawa_sun 0:4eb718005c1b 18 data_array[2] = (char)data;
Komazawa_sun 0:4eb718005c1b 19 if(I2CSlave::ReadAddressed == _slave->receive())
Komazawa_sun 0:4eb718005c1b 20 _slave->write(data_array, 3);
Komazawa_sun 0:4eb718005c1b 21 }
Komazawa_sun 0:4eb718005c1b 22
Komazawa_sun 0:4eb718005c1b 23 int ApprI2CSlave::read()
Komazawa_sun 0:4eb718005c1b 24 {
Komazawa_sun 0:4eb718005c1b 25 char buffer[3] = {};
Komazawa_sun 0:4eb718005c1b 26 if(I2CSlave::WriteAddressed == _slave->receive())
Komazawa_sun 1:946468f68668 27 {
Komazawa_sun 1:946468f68668 28 //printf("receive_now\r\n");
Komazawa_sun 0:4eb718005c1b 29 _slave->read(buffer, 3);
Komazawa_sun 1:946468f68668 30 if((alpha_a::ID)buffer[0] == _my_id)
Komazawa_sun 0:4eb718005c1b 31 {
Komazawa_sun 1:946468f68668 32 switch((alpha_a::f_type)buffer[1])
Komazawa_sun 1:946468f68668 33 {
Komazawa_sun 1:946468f68668 34 case alpha_a::sig:
Komazawa_sun 1:946468f68668 35 res_data = (signed int)buffer[2];
Komazawa_sun 1:946468f68668 36 break;
Komazawa_sun 1:946468f68668 37 case alpha_a::unsig:
Komazawa_sun 1:946468f68668 38 res_data = (unsigned int)buffer[2];
Komazawa_sun 1:946468f68668 39 break;
Komazawa_sun 1:946468f68668 40 };
Komazawa_sun 0:4eb718005c1b 41
Komazawa_sun 1:946468f68668 42 }
Komazawa_sun 0:4eb718005c1b 43 }
Komazawa_sun 1:946468f68668 44
Komazawa_sun 1:946468f68668 45
Komazawa_sun 1:946468f68668 46
Komazawa_sun 1:946468f68668 47 return res_data;
Komazawa_sun 0:4eb718005c1b 48 }