Problème de caractéristiques d'un serveur BLE mal décodées par nRFConnect

Objet : Bluetooth BLE Server implementation
Cible: Arduino/Bluefruit The feather (Bluetooth)
Library utilisée : Bluefruit BLE
Implementation : Cycling Power 0x1818
Probleme :

Une application comme nRF Connect, sur android, ne décode pas correctement les caractéristiques, elles apparaissent comme du binaire.
Dans e même programme un autre service pourtant implémenté de la même manière est correctement décodé par l’appli android: les énumérés sont décodés et présentés en tant que tels.
sur le code fourni ci-dessous, la caractéristique “Sensor location” est correctement décodée mais pas Cycling power measurement ni Cycling power feature.

Idées/Suggestions:

Est-ce un probleme de descripteur?
Je n’en ai pas déclarés
est-ce un problème de CCCD ? je n’ai pas utilisé ce concept…

Merci
Cordialement.
Vincent

void setupCPS(void)
{
   CyclingPower_Service.begin();
  //CPS_Measurement : caractéristique (0x2A63)
    CPS_Measurement.setProperties(CHR_PROPS_NOTIFY | CHR_PROPS_INDICATE |CHR_PROPS_READ );
    CPS_Measurement.setPermission(SECMODE_OPEN, SECMODE_NO_ACCESS);
    CPS_Measurement.setFixedLen(SIZE_CPS_MEAS_DATA);
    CPS_Measurement.begin();//validation de l'attachement de la caractéristique au service
  
    // init de la variale globale cscData contient les données utiles du capteur de cadence et vitesse
    gCPSMeasurementData.sensor.flags = 0; // Aucune option, seul le champ Instantaneous Power est mis à jour!
    gCPSMeasurementData.sensor.InstantaneousPower = 0;
    gCPSMeasurementData.sensor.PedalPowerBalance = 0;
    gCPSMeasurementData.sensor.AccumulatedTorque = 0;
    gCPSMeasurementData.sensor.CumulWheelRevolutionData = 0;
    gCPSMeasurementData.sensor.LastEventTimeWheelRevolutionData=0;
    gCPSMeasurementData.sensor.CumulCrankRevolutionData=0;
    gCPSMeasurementData.sensor.LastEventTimeCrankRevolutionData=0;
    gCPSMeasurementData.sensor.MaximumForceMagnitude=0;
    gCPSMeasurementData.sensor.MinimumForceMagnitude=0;
    gCPSMeasurementData.sensor.MaximumTorqueMagnitude=0;
    gCPSMeasurementData.sensor.MinimumForceMagnitude=0;
    gCPSMeasurementData.sensor.MaximumMinimumAngle[0]=0;
    gCPSMeasurementData.sensor.MaximumMinimumAngle[1]=0;
    gCPSMeasurementData.sensor.MaximumMinimumAngle[2]=0;
    gCPSMeasurementData.sensor.TopDeadSpotAngle=0;
    gCPSMeasurementData.sensor.BottomDeadSpotAngle=0;
    gCPSMeasurementData.sensor.AccumulatedEnergy=0;
  
    //on met à jour la caractéristique avec ses données d'init
    CPS_Measurement.write(gCPSMeasurementData.bPaquet_CPS_Meas, SIZE_CPS_MEAS_DATA );


      //CPS_Feature : caractéristique (0x2A65)
    CPS_Feature.setProperties(CHR_PROPS_NOTIFY | CHR_PROPS_INDICATE |CHR_PROPS_READ  );
    CPS_Feature.setPermission(SECMODE_OPEN, SECMODE_NO_ACCESS);
    CPS_Feature.setFixedLen(4);
    CPS_Feature.begin();//validation de l'attachement de la caractéristique au service
    uint32_t myCPSFeature;
    myCPSFeature=8;               // aucune option gérée !!!!
    CPS_Feature.write32(myCPSFeature); 

    //CPS_SensorLocation : caractéristique (0x2A5D)
    CPS_SensorLocation.setProperties(CHR_PROPS_NOTIFY | CHR_PROPS_INDICATE |CHR_PROPS_READ );
    CPS_SensorLocation.setPermission(SECMODE_OPEN, SECMODE_NO_ACCESS);
    CPS_SensorLocation.setFixedLen(1);
    CPS_SensorLocation.begin();//validation de l'attachement de la caractéristique au service
    uint8_t myCPSSensorLocation;
    myCPSSensorLocation=12;               // Capteur dans la roue arrière (Rear Wheel)
    CPS_SensorLocation.write8(myCPSSensorLocation); 

    
}