onewire_slave: use byte sizes instead of bits
This commit is contained in:
parent
84a3da0449
commit
f37b8309bb
|
@ -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
|
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
|
if (NULL==data || 0==size) { // verify input
|
||||||
return;
|
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
|
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_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
|
onewire_slave_transfer_complete = false; // reset state
|
||||||
bits_bit = 0; // reset number of bits read
|
bits_bit = 0; // reset number of bits read
|
||||||
onewire_slave_state = ONEWIRE_STATE_FUNCTION_READ; // read data
|
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
|
if (NULL==data || 0==size) { // verify input
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
if (onewire_slave_state!=ONEWIRE_STATE_FUNCTION_DATA) { // not in the right state to transfer data
|
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
|
if (UINT32_MAX/8<size) { // too many bits to transfer
|
||||||
onewire_slave_transfer_bits = bits; // number of bits to write
|
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
|
onewire_slave_transfer_complete = false; // reset state
|
||||||
bits_bit = 0; // reset number of bits written
|
bits_bit = 0; // reset number of bits written
|
||||||
bits_buffer = onewire_slave_transfer_data[0]; // prepare byte to write
|
bits_buffer = onewire_slave_transfer_data[0]; // prepare byte to write
|
||||||
onewire_slave_state = ONEWIRE_STATE_FUNCTION_WRITE; // write data
|
onewire_slave_state = ONEWIRE_STATE_FUNCTION_WRITE; // write data
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** interrupt service routine called when 1-Wire signal changes */
|
/** 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);
|
void onewire_slave_setup(uint8_t family, uint64_t serial);
|
||||||
/** read data from master
|
/** read data from master
|
||||||
* @param[out] data buffer to save read bits
|
* @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
|
* @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
|
/** write data to master
|
||||||
* @param[in] data data to write
|
* @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
|
* @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