|
21 | 21 | ******************************************************************************/
|
22 | 22 |
|
23 | 23 | #include "PF1550.h"
|
24 |
| -#include "PF1550_Io.h" |
| 24 | +#include "PF1550_IO.h" |
25 | 25 |
|
26 | 26 | #include <assert.h>
|
27 | 27 |
|
28 | 28 | /******************************************************************************
|
29 |
| - NAMESPACE |
| 29 | + CTOR/DTOR |
30 | 30 | ******************************************************************************/
|
31 | 31 |
|
32 |
| -namespace interface |
| 32 | +PF1550_IO::PF1550_IO(arduino::HardwareI2C * wire, uint8_t const i2c_addr) |
| 33 | +: _wire{wire} |
| 34 | +, _i2c_addr{i2c_addr} |
| 35 | +, _debug{nullptr} |
33 | 36 | {
|
34 | 37 |
|
| 38 | +} |
| 39 | + |
35 | 40 | /******************************************************************************
|
36 | 41 | PUBLIC MEMBER FUNCTIONS
|
37 | 42 | ******************************************************************************/
|
38 | 43 |
|
39 |
| -void PF1550_Io::setBit(Register const reg, uint8_t const bit_pos) |
| 44 | +int PF1550_IO::begin() |
| 45 | +{ |
| 46 | + _wire->begin(); |
| 47 | + _wire->setClock(100000); |
| 48 | + return derived_begin(); |
| 49 | +} |
| 50 | + |
| 51 | +void PF1550_IO::readRegister(Register const reg_addr, uint8_t * data) |
| 52 | +{ |
| 53 | + _wire->beginTransmission(_i2c_addr); |
| 54 | + _wire->write(static_cast<uint8_t>(reg_addr)); |
| 55 | + _wire->endTransmission(false); /* No Stop. */ |
| 56 | + |
| 57 | + _wire->requestFrom(_i2c_addr, 1, true); |
| 58 | + while (_wire->available() < 1) { } |
| 59 | + *data = _wire->read(); |
| 60 | +} |
| 61 | + |
| 62 | +void PF1550_IO::writeRegister(Register const reg_addr, uint8_t const data) |
| 63 | +{ |
| 64 | + _wire->beginTransmission(_i2c_addr); |
| 65 | + _wire->write(static_cast<uint8_t>(reg_addr)); |
| 66 | + _wire->write(data); |
| 67 | + _wire->endTransmission(true); |
| 68 | +} |
| 69 | + |
| 70 | +void PF1550_IO::setBit(Register const reg, uint8_t const bit_pos) |
40 | 71 | {
|
41 | 72 | assert(bit_pos < 8);
|
42 | 73 | uint8_t reg_val;
|
43 | 74 | readRegister(reg, ®_val);
|
44 | 75 | reg_val |= (1<<bit_pos);
|
45 | 76 |
|
46 |
| - uint8_t i2c_data[2]; |
47 |
| - i2c_data[0] = (uint8_t)reg; |
48 |
| - i2c_data[1] = reg_val; |
49 |
| - writeRegister(PF1550_I2C_ADDR, i2c_data, 2, 0); |
| 77 | + writeRegister(reg, reg_val); |
50 | 78 | }
|
51 | 79 |
|
52 |
| -void PF1550_Io::clrBit(Register const reg, uint8_t const bit_pos) |
| 80 | +void PF1550_IO::clrBit(Register const reg, uint8_t const bit_pos) |
53 | 81 | {
|
54 | 82 | assert(bit_pos < 8);
|
55 | 83 | uint8_t reg_val;
|
56 | 84 | readRegister(reg, ®_val);
|
57 | 85 | reg_val &= ~(1<<bit_pos);
|
58 | 86 |
|
59 |
| - uint8_t i2c_data[2]; |
60 |
| - i2c_data[0] = (uint8_t)reg; |
61 |
| - i2c_data[1] = reg_val; |
62 |
| - writeRegister(PF1550_I2C_ADDR, i2c_data, 2, 0); |
| 87 | + writeRegister(reg, reg_val); |
63 | 88 | }
|
64 |
| - |
65 |
| -/****************************************************************************** |
66 |
| - NAMESPACE |
67 |
| - ******************************************************************************/ |
68 |
| - |
69 |
| -} /* interface */ |
|
0 commit comments