Textile sensor
Dependents: MjTextileSensor_Hello
MjTextileSensor.cpp@0:9f5d5e904cb9, 2015-07-01 (annotated)
- Committer:
- matsujirushi
- Date:
- Wed Jul 01 13:58:31 2015 +0000
- Revision:
- 0:9f5d5e904cb9
created.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
matsujirushi | 0:9f5d5e904cb9 | 1 | #include "MjTextileSensor.h" |
matsujirushi | 0:9f5d5e904cb9 | 2 | #include <string.h> |
matsujirushi | 0:9f5d5e904cb9 | 3 | |
matsujirushi | 0:9f5d5e904cb9 | 4 | MjTextileSensor::MjTextileSensor(I2C* i2c, uint8_t address) |
matsujirushi | 0:9f5d5e904cb9 | 5 | { |
matsujirushi | 0:9f5d5e904cb9 | 6 | this->i2c = i2c; |
matsujirushi | 0:9f5d5e904cb9 | 7 | this->address = address; |
matsujirushi | 0:9f5d5e904cb9 | 8 | } |
matsujirushi | 0:9f5d5e904cb9 | 9 | |
matsujirushi | 0:9f5d5e904cb9 | 10 | bool MjTextileSensor::GetVersion(uint8_t* majorVersion, uint8_t* minorVersion) |
matsujirushi | 0:9f5d5e904cb9 | 11 | { |
matsujirushi | 0:9f5d5e904cb9 | 12 | char command = 0x00; |
matsujirushi | 0:9f5d5e904cb9 | 13 | i2c->write(address, &command, 1); |
matsujirushi | 0:9f5d5e904cb9 | 14 | |
matsujirushi | 0:9f5d5e904cb9 | 15 | char response[3]; |
matsujirushi | 0:9f5d5e904cb9 | 16 | i2c->read(address, response, sizeof (response)); |
matsujirushi | 0:9f5d5e904cb9 | 17 | if (response[0] != 0x80) { |
matsujirushi | 0:9f5d5e904cb9 | 18 | return false; |
matsujirushi | 0:9f5d5e904cb9 | 19 | } |
matsujirushi | 0:9f5d5e904cb9 | 20 | |
matsujirushi | 0:9f5d5e904cb9 | 21 | *minorVersion = response[1]; |
matsujirushi | 0:9f5d5e904cb9 | 22 | *majorVersion = response[2]; |
matsujirushi | 0:9f5d5e904cb9 | 23 | |
matsujirushi | 0:9f5d5e904cb9 | 24 | return true; |
matsujirushi | 0:9f5d5e904cb9 | 25 | } |
matsujirushi | 0:9f5d5e904cb9 | 26 | int MjTextileSensor::GetSensorValues(uint8_t* sensorValues, size_t sensorValuesSize) |
matsujirushi | 0:9f5d5e904cb9 | 27 | { |
matsujirushi | 0:9f5d5e904cb9 | 28 | char response[11]; |
matsujirushi | 0:9f5d5e904cb9 | 29 | i2c->read(address, response, sizeof (response)); |
matsujirushi | 0:9f5d5e904cb9 | 30 | if (response[0] != 0xff) { |
matsujirushi | 0:9f5d5e904cb9 | 31 | memset(response, 0, sizeof (response)); |
matsujirushi | 0:9f5d5e904cb9 | 32 | return 0; |
matsujirushi | 0:9f5d5e904cb9 | 33 | } |
matsujirushi | 0:9f5d5e904cb9 | 34 | |
matsujirushi | 0:9f5d5e904cb9 | 35 | int sensorValuesSizeActual = sensorValuesSize < 10 ? sensorValuesSize : 10; |
matsujirushi | 0:9f5d5e904cb9 | 36 | memcpy(sensorValues, &response[1], sensorValuesSizeActual); |
matsujirushi | 0:9f5d5e904cb9 | 37 | |
matsujirushi | 0:9f5d5e904cb9 | 38 | return sensorValuesSizeActual; |
matsujirushi | 0:9f5d5e904cb9 | 39 | } |