newbie how to send array of doubles using aurdinoBLE

I am using an Arduino nano 33 BLE. I have a simple sketch the reads 10 doubles from an impedance analyzer. I want to send these values to a BLE central running on a smartphone. I am new to both Arduino and BLE.

currently, I have a service with 10 characteristics and use notify to “send/write” the values. This does not work well, seems like values are missing, and maybe be arriving out of order? I wonder if I have some time issues

based on background reading it looks like there is a 150 ms gap between packet transmissions

I also think that maybe I can only send about 22 bytes of application data at a time. This seems surprisingly small I thought the packet size was something like 2 M bits. I realize a lot of this it used for overhead How ever I thought I could send much more data/ packet

for each value I have something like

BLEFloatCharacteristic(BLE_H_005, BLERead | BLENotify)

My current loop reads data from the impedance analyzer ever 500 ms then calls bleSend()

//###########################################################
void bleSend(double *impedanceData){
static long counter = 0;
for(int i=0;i<NUMBER_OF_INCREMENTS;i++){
int khz = (START_FREQUENCY + (FREQUENCY_INCREMENT*i))/1000;
sweepRawCharacteristics[(khz - 5)/15].writeValue(impedanceData*);*
* sweepCounterCharacteristics[(khz - 5)/15].writeValue(counter);*
* }*
* ++counter;*
*}*
*```*
*does each write() actually send a packet or L2CAP layer smart and try to split/bundle application data to send the largest possible payload?*
_could I be losing data because it takes 2 * 10 * 150ms to send the data that is collected every 500 ms?_
*Any suggestions would be greatly appreciated*
*Andy*
*p.s. should I be posting my question some where else?*

aedwip:
I have a simple sketch the reads 10 doubles from an impedance analyzer.

How do you get 10 doubles (64-bit floating point)? Double is a computational data type. Usually sensors do not create doubles they create up to 16-bit integers maybe 32-bit.

aedwip:
This does not work well, seems like values are missing,

Can you post your sketch?

aedwip:
and maybe be arriving out of order?

I cannot see how that should happen. Maybe when a packet is retransmitted.

aedwip:
based on background reading it looks like there is a 150 ms gap between packet transmissions

The interval is a bit more complicated. Shorter intervals are possible, but they can be ignored.

aedwip:
I also think that maybe I can only send about 22 bytes of application data at a time.

Data packets can theoretically contain up to 27 bytes.

aedwip:
This seems surprisingly small I thought the packet size was something like 2 M bits.

BLE has a bit rate of 1Mbit per second, but only to quickly send the bits and then stop sending. It is part of the low power and cheap silicon design of the BLE protocol. You cannot send continuously, this would require more complicated/expensive silicon design.

aedwip:
p.s. should I be posting my question some where else?

There is a sub-forum for the new Arduino's you can post BLE questions there. But only in one. Cross posting is against the forum rules.