78 addToQueue(
new WriteByte(executor, address, command, data));
80 executor->
writeByte(address, command, data);
86 addToQueue(
new WriteBytes(executor, addresses, commands, data, no_addresses));
88 executor->
writeBytes(addresses, commands, data, no_addresses);
94 return executor->
readByte(address, command);
96 return executor->
readByte(address, command);
102 addToQueue(
new WriteWord(executor, address, command, data));
104 executor->
writeWord(address, command, data);
110 return executor->
readWord(address, command);
112 return executor->
readWord(address, command);
116 uint8_t *block, uint16_t block_size)
119 addToQueue(
new WriteBlock(executor, address, command, block, block_size));
121 executor->
writeBlock(address, command, block, block_size);
125 uint8_t *block_out, uint16_t block_out_size, uint8_t *block_in, uint16_t block_in_size)
130 return executor->
writeReadBlock(address, command, block_out, block_out_size, block_in, block_in_size);
134 uint8_t *block, uint16_t block_size)
139 return executor->
readBlock(address, command, block, block_size);
145 addToQueue(
new SendByte(executor, address, command));
147 executor->
sendByte(address, command);
158 bool LT_SMBusGroup::addToQueue(Executable *ex)
163 Node *newNode =
new Node();
169 newNode->executable = ex;
170 tail->next = newNode;
179 while ((tail = head->next) != NULL)
185 head->executable->execute();
186 delete head->executable;
197 LT_SMBusGroup::Executable::Executable(
LT_SMBus *e)
202 LT_SMBusGroup::WriteByte::WriteByte(
LT_SMBus *e, uint8_t a, uint8_t c, uint8_t d) : Executable(e)
208 void LT_SMBusGroup::WriteByte::execute()
213 LT_SMBusGroup::WriteBytes::WriteBytes(
LT_SMBus *e, uint8_t *a, uint8_t *c, uint8_t *d, uint8_t n) : Executable(e)
220 void LT_SMBusGroup::WriteBytes::execute()
225 LT_SMBusGroup::WriteWord::WriteWord(
LT_SMBus *e, uint8_t a, uint8_t c, uint16_t d) : Executable(e)
231 void LT_SMBusGroup::WriteWord::execute()
236 LT_SMBusGroup::WriteBlock::WriteBlock(
LT_SMBus *e, uint8_t a, uint8_t c, uint8_t *b, uint16_t bl) : Executable(e)
243 void LT_SMBusGroup::WriteBlock::execute()
248 LT_SMBusGroup::SendByte::SendByte(
LT_SMBus *e, uint8_t a, uint8_t c) : Executable(e)
253 void LT_SMBusGroup::SendByte::execute()
uint8_t readByte(uint8_t address, uint8_t command)
SMBus read byte command.
void endGroupProtocol(void)
ends group protocol so I2CBus knows to send STOPs again.
LTC SMBus Support: Implementation for a shared SMBus layer.
uint8_t writeReadBlock(uint8_t address, uint8_t command, uint8_t *block_out, uint16_t block_out_size, uint8_t *block_in, uint16_t block_in_size)
SMBus write then read block command.
virtual void sendByte(uint8_t address, uint8_t command)=0
SMBus send byte command.
void beginStoring()
Group Protocol Begin.
void execute()
Group Protocol Execute queued commands.
void writeByte(uint8_t address, uint8_t command, uint8_t data)
SMBus write byte command.
void startGroupProtocol(void)
starts group protocol so I2CBus knows to repeat START instead of STOP.
LT_SMBusGroup(LT_SMBus *)
virtual void writeWord(uint8_t address, uint8_t command, uint16_t data)=0
SMBus write word command.
union LT_union_int32_4bytes data
void writeBlock(uint8_t address, uint8_t command, uint8_t *block, uint16_t block_size)
SMBus write block command.
virtual void writeBytes(uint8_t *addresses, uint8_t *commands, uint8_t *data, uint8_t no_addresses)=0
SMBus write byte command for a list of addresses.
void writeWord(uint8_t address, uint8_t command, uint16_t data)
SMBus write word command.
void writeBytes(uint8_t *addresses, uint8_t *commands, uint8_t *data, uint8_t no_addresses)
SMBus write byte command for a list of addresses.
virtual void writeByte(uint8_t address, uint8_t command, uint8_t data)=0
SMBus write byte command.
virtual uint8_t readByte(uint8_t address, uint8_t command)=0
SMBus read byte command.
uint16_t readWord(uint8_t address, uint8_t command)
SMBus read word command.
void sendByte(uint8_t address, uint8_t command)
SMBus send byte command.
virtual LT_I2CBus * i2cbus(void)=0
virtual uint8_t readBlock(uint8_t address, uint8_t command, uint8_t *block, uint16_t block_size)=0
SMBus read block command.
virtual void writeBlock(uint8_t address, uint8_t command, uint8_t *block, uint16_t block_size)=0
SMBus write block command.
virtual uint8_t writeReadBlock(uint8_t address, uint8_t command, uint8_t *block_out, uint16_t block_out_size, uint8_t *block_in, uint16_t block_in_size)=0
SMBus write then read block command.
uint8_t readBlock(uint8_t address, uint8_t command, uint8_t *block, uint16_t block_size)
SMBus read block command.
virtual uint16_t readWord(uint8_t address, uint8_t command)=0
SMBus read word command.