btstack_util: add read/write single bytes to little_endian/big_endian functions

for symmetry reasons
This commit is contained in:
Matthias Ringwald 2024-09-30 13:57:03 +02:00
parent d6114072e1
commit 9fce1f717e
2 changed files with 26 additions and 4 deletions

View File

@ -74,6 +74,9 @@ void bd_addr_copy(bd_addr_t dest, const bd_addr_t src){
(void)memcpy(dest, src, BD_ADDR_LEN);
}
uint8_t little_endian_read_08(const uint8_t* buffer, int position) {
return (uint8_t)buffer[position];
}
uint16_t little_endian_read_16(const uint8_t * buffer, int position){
return (uint16_t)(((uint16_t) buffer[position]) | (((uint16_t)buffer[position+1]) << 8));
}
@ -84,6 +87,11 @@ uint32_t little_endian_read_32(const uint8_t * buffer, int position){
return ((uint32_t) buffer[position]) | (((uint32_t)buffer[position+1]) << 8) | (((uint32_t)buffer[position+2]) << 16) | (((uint32_t) buffer[position+3]) << 24);
}
void little_endian_store_08(uint8_t* buffer, uint16_t position, uint8_t value) {
uint16_t pos = position;
buffer[pos] = value;
}
void little_endian_store_16(uint8_t * buffer, uint16_t position, uint16_t value){
uint16_t pos = position;
buffer[pos++] = (uint8_t)value;
@ -105,6 +113,10 @@ void little_endian_store_32(uint8_t * buffer, uint16_t position, uint32_t value)
buffer[pos++] = (uint8_t)(value >> 24);
}
uint32_t big_endian_read_08(const uint8_t* buffer, int position) {
return buffer[position];
}
uint32_t big_endian_read_16(const uint8_t * buffer, int position) {
return (uint16_t)(((uint16_t) buffer[position+1]) | (((uint16_t)buffer[position]) << 8));
}
@ -117,6 +129,11 @@ uint32_t big_endian_read_32(const uint8_t * buffer, int position) {
return ((uint32_t) buffer[position+3]) | (((uint32_t)buffer[position+2]) << 8) | (((uint32_t)buffer[position+1]) << 16) | (((uint32_t) buffer[position]) << 24);
}
void big_endian_store_08(uint8_t* buffer, uint16_t position, uint8_t value) {
uint16_t pos = position;
buffer[pos++] = (uint8_t)(value);
}
void big_endian_store_16(uint8_t * buffer, uint16_t position, uint16_t value){
uint16_t pos = position;
buffer[pos++] = (uint8_t)(value >> 8);

View File

@ -105,41 +105,46 @@ int32_t btstack_time_delta(uint32_t time_a, uint32_t time_b);
int16_t btstack_time16_delta(uint16_t time_a, uint16_t time_b);
/**
* @brief Read 16/24/32 bit little endian value from buffer
* @brief Read 08/16/24/32 bit little endian value from buffer
* @param buffer
* @param position in buffer
* @return value
*/
uint8_t little_endian_read_08(const uint8_t * buffer, int position);
uint16_t little_endian_read_16(const uint8_t * buffer, int position);
uint32_t little_endian_read_24(const uint8_t * buffer, int position);
uint32_t little_endian_read_32(const uint8_t * buffer, int position);
/**
* @brief Write 16/32 bit little endian value into buffer
* @brief Write 08/16/32 bit little endian value into buffer
* @param buffer
* @param position in buffer
* @param value
*/
void little_endian_store_08(uint8_t * buffer, uint16_t position, uint8_t value);
void little_endian_store_16(uint8_t * buffer, uint16_t position, uint16_t value);
void little_endian_store_24(uint8_t * buffer, uint16_t position, uint32_t value);
void little_endian_store_32(uint8_t * buffer, uint16_t position, uint32_t value);
/**
* @brief Read 16/24/32 bit big endian value from buffer
* @brief Read 08/16/24/32 bit big endian value from buffer
* @param buffer
* @param position in buffer
* @return value
*/
uint32_t big_endian_read_08(const uint8_t* buffer, int position);
uint32_t big_endian_read_16(const uint8_t * buffer, int position);
uint32_t big_endian_read_24(const uint8_t * buffer, int position);
uint32_t big_endian_read_32(const uint8_t * buffer, int position);
/**
* @brief Write 16/32 bit big endian value into buffer
* @brief Write 08/16/32 bit big endian value into buffer
* @param buffer
* @param position in buffer
* @param value
*/
void big_endian_store_08(uint8_t * buffer, uint16_t position, uint8_t value);
void big_endian_store_16(uint8_t * buffer, uint16_t position, uint16_t value);
void big_endian_store_24(uint8_t * buffer, uint16_t position, uint32_t value);
void big_endian_store_32(uint8_t * buffer, uint16_t position, uint32_t value);