rockbox/firmware/usbstack/iap/libiap/pack-util.h
mojyack 3bb656625b usb: add usb iAP driver
add class driver source files.
also register iap audio sink.
usbstack/iap/libiap directory is imported from libiap.

Change-Id: I776c5caec33fe9efadc448e2e3b37d500bf19c9f
2026-05-03 12:40:54 -04:00

41 lines
1.1 KiB
C

#include <stdint.h>
#include <string.h>
#include "bool.h"
#include "macros.h"
__attribute__((unused)) static IAPBool pack_u8(uint8_t** data, size_t* size, uint8_t value) {
check_ret(*size >= 1, iap_false);
(*data)[0] = value;
*data += 1;
*size -= 1;
return iap_true;
}
__attribute__((unused)) static IAPBool pack_u16(uint8_t** data, size_t* size, uint16_t value) {
check_ret(*size >= 2, iap_false);
(*data)[0] = value >> 8;
(*data)[1] = value;
*data += 2;
*size -= 2;
return iap_true;
}
__attribute__((unused)) static IAPBool pack_u32(uint8_t** data, size_t* size, uint32_t value) {
check_ret(*size >= 2, iap_false);
(*data)[0] = value >> 24;
(*data)[1] = value >> 16;
(*data)[2] = value >> 8;
(*data)[3] = value;
*data += 4;
*size -= 4;
return iap_true;
}
__attribute__((unused)) static IAPBool pack_data(uint8_t** data, size_t* size, const void* payload, size_t payload_size) {
check_ret(*size >= payload_size, iap_false);
memcpy(*data, payload, payload_size);
*data += payload_size;
*size -= payload_size;
return iap_true;
}