onewire_slave: use byte sizes instead of bits
This commit is contained in:
parent
55e75183c6
commit
1ec65d9fe3
@ -154,35 +154,43 @@ void onewire_slave_setup(uint8_t family, uint64_t serial)
|
||||
nvic_enable_irq(NVIC_EXTI_IRQ(ONEWIRE_SLAVE_PIN)); // enable interrupt
|
||||
}
|
||||
|
||||
void onewire_slave_function_read(uint8_t* data, uint32_t bits)
|
||||
bool onewire_slave_function_read(uint8_t* data, size_t size)
|
||||
{
|
||||
if (NULL==data || 0==bits) { // verify input
|
||||
return;
|
||||
if (NULL==data || 0==size) { // verify input
|
||||
return false;
|
||||
}
|
||||
if (UINT32_MAX/8<size) { // too many bits to transfer
|
||||
return false;
|
||||
}
|
||||
if (onewire_slave_state!=ONEWIRE_STATE_FUNCTION_DATA) { // not in the right state to transfer data
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
onewire_slave_transfer_data = data; // save buffer to write to
|
||||
onewire_slave_transfer_bits = bits; // number of bits to read
|
||||
onewire_slave_transfer_bits = size*8; // number of bits to read
|
||||
onewire_slave_transfer_complete = false; // reset state
|
||||
bits_bit = 0; // reset number of bits read
|
||||
onewire_slave_state = ONEWIRE_STATE_FUNCTION_READ; // read data
|
||||
return true;
|
||||
}
|
||||
|
||||
void onewire_slave_function_write(uint8_t* data, uint32_t bits)
|
||||
bool onewire_slave_function_write(const uint8_t* data, size_t size)
|
||||
{
|
||||
if (NULL==data || 0==bits) { // verify input
|
||||
return;
|
||||
if (NULL==data || 0==size) { // verify input
|
||||
return false;
|
||||
}
|
||||
if (onewire_slave_state!=ONEWIRE_STATE_FUNCTION_DATA) { // not in the right state to transfer data
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
onewire_slave_transfer_data = data; // save buffer to read from
|
||||
onewire_slave_transfer_bits = bits; // number of bits to write
|
||||
if (UINT32_MAX/8<size) { // too many bits to transfer
|
||||
return false;
|
||||
}
|
||||
onewire_slave_transfer_data = (uint8_t*)data; // save buffer to read from
|
||||
onewire_slave_transfer_bits = size*8; // number of bits to write
|
||||
onewire_slave_transfer_complete = false; // reset state
|
||||
bits_bit = 0; // reset number of bits written
|
||||
bits_buffer = onewire_slave_transfer_data[0]; // prepare byte to write
|
||||
onewire_slave_state = ONEWIRE_STATE_FUNCTION_WRITE; // write data
|
||||
return true;
|
||||
}
|
||||
|
||||
/** interrupt service routine called when 1-Wire signal changes */
|
||||
|
@ -39,13 +39,15 @@ extern volatile bool onewire_slave_transfer_complete;
|
||||
void onewire_slave_setup(uint8_t family, uint64_t serial);
|
||||
/** read data from master
|
||||
* @param[out] data buffer to save read bits
|
||||
* @param[in] bits number of bits to read
|
||||
* @param[in] size number of bytes to read
|
||||
* @return if transfer initialization succeeded
|
||||
* @note onewire_slave_transfer_complete is set when transfer is completed
|
||||
*/
|
||||
void onewire_slave_function_read(uint8_t* data, uint32_t bits);
|
||||
bool onewire_slave_function_read(uint8_t* data, size_t size);
|
||||
/** write data to master
|
||||
* @param[in] data data to write
|
||||
* @param[in] bits number of bits to write
|
||||
* @param[in] size number of bytes to write
|
||||
* @return if transfer initialization succeeded
|
||||
* @note onewire_slave_transfer_complete is set when transfer is completed
|
||||
*/
|
||||
void onewire_slave_function_write(uint8_t* data, uint32_t bits);
|
||||
bool onewire_slave_function_write(const uint8_t* data, size_t size);
|
||||
|
Loading…
Reference in New Issue
Block a user