#include "../profiles/audio/a2dp-codecs.h"
#define MAX_SEID 0x3E
-static unsigned int seids;
+static uint64_t seids;
#ifndef MAX
# define MAX(x, y) ((x) > (y) ? (x) : (y))
#define AVDTP_PSM 25
#define MAX_SEID 0x3E
-static unsigned int seids;
+static uint64_t seids;
#ifndef MAX
# define MAX(x, y) ((x) > (y) ? (x) : (y))
uint8_t max_scan_rsp_len;
uint8_t max_ads;
uint32_t supported_flags;
- unsigned int instance_bitmap;
+ uint64_t instance_bitmap;
bool extended_add_cmds;
int8_t min_tx_power;
int8_t max_tx_power;
/* Helpers for bitfield operations */
-/* Find unique id in range from 1 to max but no bigger then
- * sizeof(int) * 8. ffs() is used since it is POSIX standard
- */
-uint8_t util_get_uid(unsigned int *bitmap, uint8_t max)
+/* Find unique id in range from 1 to max but no bigger than 64. */
+uint8_t util_get_uid(uint64_t *bitmap, uint8_t max)
{
uint8_t id;
- id = ffs(~*bitmap);
+ id = ffsll(~*bitmap);
if (!id || id > max)
return 0;
- *bitmap |= 1u << (id - 1);
+ *bitmap |= ((uint64_t)1) << (id - 1);
return id;
}
/* Clear id bit in bitmap */
-void util_clear_uid(unsigned int *bitmap, uint8_t id)
+void util_clear_uid(uint64_t *bitmap, uint8_t id)
{
- if (!id)
+ if (!id || id > 64)
return;
- *bitmap &= ~(1u << (id - 1));
+ *bitmap &= ~(((uint64_t)1) << (id - 1));
}
static const struct {
unsigned char util_get_dt(const char *parent, const char *name);
-uint8_t util_get_uid(unsigned int *bitmap, uint8_t max);
-void util_clear_uid(unsigned int *bitmap, uint8_t id);
+uint8_t util_get_uid(uint64_t *bitmap, uint8_t max);
+void util_clear_uid(uint64_t *bitmap, uint8_t id);
const char *bt_uuid16_to_str(uint16_t uuid);
const char *bt_uuid32_to_str(uint32_t uuid);
struct avdtp_local_sep *sep;
unsigned int i;
- for (i = 0; i < sizeof(int) * 8; i++) {
+ for (i = 0; i < MAX_SEID; i++) {
sep = avdtp_register_sep(context->lseps, AVDTP_SEP_TYPE_SINK,
AVDTP_MEDIA_TYPE_AUDIO,
0x00, TRUE, &sep_ind, NULL,