38 static const int ADDRESS = 42;
39 static const int SHIFTED_ADDRESS = ADDRESS << 1;
42 template<
size_t I2C_BUFFER_SIZE,
size_t STACK_SIZE,
size_t QUEUE_BUFFER_SIZE>
43 MyI2CSlave (uint8_t (&buffer)[I2C_BUFFER_SIZE],
const uint32_t (&stack)[STACK_SIZE],
44 uint8_t (&queueBuffer)[QUEUE_BUFFER_SIZE])
58 this->m_sum += this->m_queue.
dequeue();
59 this->
write(this->m_sum);
69 while (-1 != (result = this->
read()))
70 this->m_queue.
insert(
static_cast<uint8_t
>(result));
88 uint8_t queueBuffer[32];
92 Runnable::invoke(slave);
103 if (master.
ping(MyI2CSlave::SHIFTED_ADDRESS)) {
104 pwOut <<
"ACK received!\n";
106 pwOut <<
"Expecting 0: " << master.
get(MyI2CSlave::SHIFTED_ADDRESS,
static_cast<uint8_t
>(0)) <<
'\n';
107 pwOut <<
"Expecting 1: " << master.
get(MyI2CSlave::SHIFTED_ADDRESS,
static_cast<uint8_t
>(1)) <<
'\n';
108 pwOut <<
"Expecting 3: " << master.
get(MyI2CSlave::SHIFTED_ADDRESS,
static_cast<uint8_t
>(2)) <<
'\n';
109 pwOut <<
"Expecting 6: " << master.
get(MyI2CSlave::SHIFTED_ADDRESS,
static_cast<uint8_t
>(3)) <<
'\n';
110 pwOut <<
"Expecting 10: " << master.
get(MyI2CSlave::SHIFTED_ADDRESS,
static_cast<uint8_t
>(4)) <<
'\n';
111 pwOut <<
"Expecting 80: " << master.
get(MyI2CSlave::SHIFTED_ADDRESS,
static_cast<uint16_t
>(0x1234)) <<
'\n';
113 pwOut <<
"No ack! :(\n I guess we're done.\n";