<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Thank you for your replyRe: BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c in Wireless MCU</title>
    <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278148#M11169</link>
    <description>&lt;P&gt;Thank you for your reply&lt;/P&gt;&lt;P&gt;we use the device:&lt;FONT color="#FF0000"&gt;MKW31Z512XXX4&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;base sdk is:&lt;FONT color="#FF0000"&gt;&lt;SPAN&gt;SDK_2.X_MKW31Z512XXX4&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;we &lt;SPAN&gt;modifications：&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#define &lt;FONT color="#FF0000"&gt;mHeartRateReportInterval_c&lt;/FONT&gt; (10)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;static void BleApp_ConnectionCallback (deviceId_t peerDeviceId, gapConnectionEvent_t* pConnectionEvent)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;----&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;switch (pConnectionEvent-&amp;gt;eventType)&lt;BR /&gt;{&lt;BR /&gt;case gConnEvtConnected_c:&lt;BR /&gt;{&lt;BR /&gt;Hrs_Subscribe(peerDeviceId);&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;BleApp_StartHeartRate&lt;/FONT&gt;(mHeartRateReportInterval_c);&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;....&lt;BR /&gt;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;---&amp;gt;void BleApp_StartHeartRate(uint16_t mtime)&lt;BR /&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;TMR_StartLowPowerTimer(mHeartRateMeasurementTimerId, gTmrLowPowerIntervalMillisTimer_c,&lt;BR /&gt;TmrMilliseconds(mtime), &lt;FONT color="#FF0000"&gt;HeartRateMeasurementTimerCallback&lt;/FONT&gt;, NULL);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;-----&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;static hrsUserData_t hrsUserData;&lt;BR /&gt;static hrsConfig_t hrsServiceConfig = {service_heart_rate, TRUE, FALSE, TRUE, gHrs_BodySensorLocOther_c, &amp;amp;hrsUserData};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;void HeartRateMeasurementTimerCallback(void * pParam)&lt;BR /&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;uint16_t hr=0,hs=0,energy = 0;&lt;BR /&gt;rtc_datetime_t date;&lt;BR /&gt;uint16_t hr_l = 0,hr_c=0,hr_r=0;&lt;BR /&gt;hr_l = ADC16_Mic0();&lt;BR /&gt;hs = hr_c = ADC16_Mic1();&lt;BR /&gt;hr_r = ADC16_Mic2();&lt;BR /&gt;hr=(hr_r + hr_l)/2 - hr_c;&lt;BR /&gt;if(hr &amp;lt; 0)&lt;BR /&gt;hr = 0;&lt;BR /&gt;if(hrsUserData.cRrIntervals == gHrs_NumOfRRIntervalsRecorded_c){&lt;BR /&gt;if(hs &amp;lt; hs_tmp)&lt;BR /&gt;hs = hs_tmp;&lt;BR /&gt;hs_tmp = 0;&lt;BR /&gt;Hrs_AddExpendedEnergy(&amp;amp;hrsUserData, energy,hs);&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;Hrs_RecordHeartRateMeasurement&lt;/FONT&gt;(service_heart_rate, hr, &amp;amp;hrsUserData);&lt;BR /&gt;&lt;BR /&gt;}else&lt;BR /&gt;{&lt;BR /&gt;//PRINTF("stephen not 7 hr=0x%x,hs=0x%x,hs_tmp=0x%x\r\n",hr,hs,hs_tmp);&lt;BR /&gt;if(hs &amp;gt; hs_tmp)&lt;BR /&gt;hs_tmp = hs;//add stephen&lt;BR /&gt;Hrs_RecordRRInterval(&amp;amp;hrsUserData,hr);&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;==============&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for&amp;nbsp;&lt;FONT color="#FF0000"&gt;Hrs_RecordHeartRateMeasurement&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;typedef struct hrsUserData_tag&lt;BR /&gt;{&lt;BR /&gt;#if gHrs_EnableRRIntervalMeasurements_d&lt;BR /&gt;/*! Heart Rate Service - RR Interval Measurements Buffer*/&lt;BR /&gt;uint16_t *pStoredRrIntervals;&lt;/P&gt;&lt;P&gt;/*! Heart Rate Service - RR Interval Count*/&lt;BR /&gt;uint8_t cRrIntervals;&lt;/P&gt;&lt;P&gt;/*! Heart Rate Service - Current Position in RR Interval Measurements Vector*/&lt;BR /&gt;uint8_t rrCursor;&lt;BR /&gt;#endif&lt;BR /&gt;/*! Heart Rate Service - Expended Energy Values */&lt;BR /&gt;uint16_t expendedEnergy;&lt;/P&gt;&lt;P&gt;uint16_t adc_Hs;&lt;/P&gt;&lt;P&gt;}hrsUserData_t;&lt;/P&gt;&lt;P&gt;void Hrs_AddExpendedEnergy(hrsUserData_t *pHrsUserData, uint16_t energy,uint16_t hs)&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;pHrsUserData-&amp;gt;expendedEnergy = energy;// no use&lt;BR /&gt;pHrsUserData-&amp;gt;adc_Hs = hs;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;bleResult_t Hrs_RecordHeartRateMeasurement (uint16_t serviceHandle, uint16_t heartRate, hrsUserData_t *pHrsUserData)&lt;BR /&gt;{&lt;BR /&gt;uint16_t hValueHrMeasurement;&lt;BR /&gt;bleResult_t result;&lt;BR /&gt;bleUuid_t uuid = Uuid16(gBleSig_HrMeasurement_d);&lt;BR /&gt;//PRINTF("Hrs_RecordHeartRateMeasurement\r\n");&lt;/P&gt;&lt;P&gt;/* Get handle of Heart Rate Measurement characteristic */&lt;BR /&gt;result = GattDb_FindCharValueHandleInService(serviceHandle,&lt;BR /&gt;gBleUuidType16_c, &amp;amp;uuid, &amp;amp;hValueHrMeasurement);&lt;/P&gt;&lt;P&gt;if (result != gBleSuccess_c)&lt;BR /&gt;return result;&lt;/P&gt;&lt;P&gt;/* Update characteristic value and send notification */&lt;BR /&gt;if (!&lt;FONT color="#FF0000"&gt;Hrs_UpdateHrmCharacteristic&lt;/FONT&gt;(hValueHrMeasurement, heartRate, pHrsUserData))&lt;BR /&gt;{&lt;BR /&gt;Hrs_SendNotifications(hValueHrMeasurement);&lt;BR /&gt;}&lt;BR /&gt;return gBleSuccess_c;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;====&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for&amp;nbsp;&lt;FONT color="#FF0000"&gt;Hrs_UpdateHrmCharacteristic&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT color="#FF0000"&gt;#define Hrs_MaxNotificationSize 20&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;static uint8_t characteristic[Hrs_MaxNotificationSize];&lt;BR /&gt;static bleResult_t Hrs_UpdateHrmCharacteristic&lt;BR /&gt;(&lt;BR /&gt;uint16_t handle,&lt;BR /&gt;uint16_t heartRate,&lt;BR /&gt;hrsUserData_t *pHrsUserData&lt;BR /&gt;){&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;uint8_t index = 0;&lt;BR /&gt;uint8_t flag = 0;&lt;BR /&gt;uint32_t date_s;&lt;BR /&gt;#if gHrs_EnableRRIntervalMeasurements_d&lt;BR /&gt;uint8_t iRRIntervalsCount;&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;/* Add flags */&lt;/P&gt;&lt;P&gt;Hrs_GetHrmFlags(handle, &amp;amp;flag);//add stephen&lt;/P&gt;&lt;P&gt;/* Add HR Value*/&lt;BR /&gt;if (Hrs_GetHeartRateFormat(heartRate) &amp;amp; gHrs_16BitHeartRateFormat_c)&lt;BR /&gt;{&lt;BR /&gt;//PRINTF("stephen HR Value 16 bit\r\n");&lt;BR /&gt;//characteristic[0] |= gHrs_16BitHeartRateFormat_c;//modify stephen&lt;BR /&gt;flag |= gHrs_16BitHeartRateFormat_c;&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;heartRate, sizeof(uint16_t));&lt;BR /&gt;index++;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;//characteristic[0] &amp;amp;= ~gHrs_16BitHeartRateFormat_c; //modify stephen&lt;BR /&gt;flag |= gHrs_16BitHeartRateFormat_c;//add stephen&lt;BR /&gt;characteristic[index] = (uint8_t) heartRate;&lt;BR /&gt;}&lt;BR /&gt;index++;&lt;BR /&gt;if (characteristic[0] &amp;amp; gHrs_SensorContactSupported_c)&lt;BR /&gt;{&lt;BR /&gt;//uint16_t nr = ADC16_Mic1();&lt;BR /&gt;uint16_t nr = pHrsUserData-&amp;gt;adc_Hs;&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;nr, sizeof(uint16_t));&lt;BR /&gt;index += sizeof(uint16_t);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (flag &amp;amp; gHrs_EnergyExpendedEnabled_c)//add stephen&lt;BR /&gt;{&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;pHrsUserData-&amp;gt;expendedEnergy, sizeof(uint16_t));&lt;BR /&gt;index += sizeof(uint16_t);&lt;BR /&gt;}&lt;BR /&gt;#if gHrs_EnableRRIntervalMeasurements_d&lt;BR /&gt;/* Add RR Intervals */&lt;BR /&gt;if (pHrsUserData-&amp;gt;cRrIntervals &amp;gt; 0)&amp;nbsp;&lt;BR /&gt;{&lt;BR /&gt;iRRIntervalsCount = MIN(&lt;BR /&gt;(Hrs_MaxNotificationSize - index) / sizeof(uint16_t),&lt;BR /&gt;pHrsUserData-&amp;gt;cRrIntervals);&lt;BR /&gt;&lt;BR /&gt;//characteristic[0] |= gHrs_RrIntervalsEnabled_c; //modify stephen&lt;BR /&gt;flag |= gHrs_RrIntervalsEnabled_c; //add stephen&lt;BR /&gt;//PRINTF("stephen indexa=%d,iRRIntervalsCount=%d,cRrIntervals=%d,Hrs_MaxNotificationSize=%d\r\n",index,iRRIntervalsCount,pHrsUserData-&amp;gt;cRrIntervals,Hrs_MaxNotificationSize);&lt;BR /&gt;if (pHrsUserData-&amp;gt;rrCursor + iRRIntervalsCount &amp;gt; gHrs_NumOfRRIntervalsRecorded_c)&lt;BR /&gt;{&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index],&lt;BR /&gt;&amp;amp;pHrsUserData-&amp;gt;pStoredRrIntervals[pHrsUserData-&amp;gt;rrCursor],&lt;BR /&gt;(gHrs_NumOfRRIntervalsRecorded_c - pHrsUserData-&amp;gt;rrCursor)&lt;BR /&gt;* sizeof(uint16_t));&lt;BR /&gt;&lt;BR /&gt;index += (gHrs_NumOfRRIntervalsRecorded_c - pHrsUserData-&amp;gt;rrCursor) * sizeof(uint16_t);&lt;/P&gt;&lt;P&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;pHrsUserData-&amp;gt;pStoredRrIntervals[0],&lt;BR /&gt;(iRRIntervalsCount + pHrsUserData-&amp;gt;rrCursor&lt;BR /&gt;- gHrs_NumOfRRIntervalsRecorded_c) * sizeof(uint16_t));&lt;BR /&gt;&lt;BR /&gt;index += (iRRIntervalsCount + pHrsUserData-&amp;gt;rrCursor&lt;BR /&gt;- gHrs_NumOfRRIntervalsRecorded_c) * sizeof(uint16_t);&lt;BR /&gt;//PRINTF("stephen indexb=%d\r\n",index);&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index],&lt;BR /&gt;&amp;amp;pHrsUserData-&amp;gt;pStoredRrIntervals[0],&lt;BR /&gt;iRRIntervalsCount * sizeof(uint16_t));&lt;BR /&gt;index += iRRIntervalsCount * sizeof(uint16_t);&lt;BR /&gt;//PRINTF("stephen indexc=%d\r\n",index);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Update circular buffer */&lt;BR /&gt;pHrsUserData-&amp;gt;rrCursor = (pHrsUserData-&amp;gt;rrCursor + iRRIntervalsCount)&lt;BR /&gt;% gHrs_NumOfRRIntervalsRecorded_c;&lt;BR /&gt;pHrsUserData-&amp;gt;cRrIntervals -= iRRIntervalsCount;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;#endif /* gHrs_EnableRRIntervalMeasurements_d */&lt;BR /&gt;return GattDb_WriteAttribute(handle, index, &amp;amp;characteristic[0]);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;===&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;bluetooth\profiles\heart_rate&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PRIMARY_SERVICE(service_heart_rate, gBleSig_HeartRateService_d)&lt;BR /&gt;CHARACTERISTIC(char_hr_measurement, gBleSig_HrMeasurement_d, (gGattCharPropNotify_c))&lt;BR /&gt;VALUE_VARLEN(value_hr_measurement, gBleSig_HrMeasurement_d, (gPermissionNone_c), 20, 2, 0x00, 0xB4)&lt;BR /&gt;CCCD(cccd_hr_measurement)&lt;BR /&gt;CHARACTERISTIC(char_body_sensor_location, gBleSig_BodySensorLocation_d, (gGattCharPropRead_c) )&lt;BR /&gt;VALUE(value_body_sensor_location, gBleSig_BodySensorLocation_d, (gPermissionFlagReadable_c), 1, 0x01)&lt;BR /&gt;CHARACTERISTIC(char_hr_ctrl_point, gBleSig_HrControlPoint_d, (gGattCharPropWrite_c | gGattCharPropRead_c) )&lt;BR /&gt;VALUE(value_hr_ctrl_point, gBleSig_HrControlPoint_d, (gPermissionFlagReadable_c | gPermissionFlagWritable_c), 7, 20,19,9,2,14,19,30)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 18 May 2021 09:51:17 GMT</pubDate>
    <dc:creator>shizelin</dc:creator>
    <dc:date>2021-05-18T09:51:17Z</dc:date>
    <item>
      <title>BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c</title>
      <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1277432#M11165</link>
      <description>&lt;P&gt;hi NXP team:&lt;/P&gt;&lt;P&gt;After my device is connected to the phone,After testing for a while，Probabilistically, the phone cannot receive data,At the same time, there is an error Log on my device&lt;/P&gt;&lt;P&gt;my code&lt;/P&gt;&lt;P&gt;static void BleApp_GattServerCallback (deviceId_t deviceId, gattServerEvent_t* pServerEvent)&lt;BR /&gt;{&lt;BR /&gt;uint16_t handle;&lt;BR /&gt;uint8_t status;&lt;BR /&gt;uint8_t i;&lt;BR /&gt;#if DEBUG_BLUETOOTH&lt;BR /&gt;PRINTF("BleApp_GattServerCallback=%d\r\n",pServerEvent-&amp;gt;eventType);&lt;BR /&gt;#endif&lt;BR /&gt;switch (pServerEvent-&amp;gt;eventType)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;case gEvtError_c:&lt;BR /&gt;{&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;PRINTF("stephen gEvtError_c:error:0x%x,procedureType:0x%x\r\n",pServerEvent-&amp;gt;eventData.procedureError.error,pServerEvent-&amp;gt;eventData.procedureError.procedureType);&lt;/FONT&gt;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;case gEvtAttributeWritten_c:&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;handle = pServerEvent-&amp;gt;eventData.attributeWrittenEvent.handle;&lt;BR /&gt;status = gAttErrCodeNoError_c;&lt;/P&gt;&lt;P&gt;GattServer_SendAttributeWrittenStatus(deviceId, handle, status);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;case gEvtHandleValueConfirmation_c:&lt;BR /&gt;{&lt;BR /&gt;BleApp_HandleValueConfirmation (deviceId);&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;default:&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;from the log we got:&lt;/P&gt;&lt;P&gt;BleApp_GattServerCallback=5 &lt;FONT color="#FF0000"&gt;----&amp;gt; gEvtError_c&lt;/FONT&gt;, /*!&amp;lt; An error appeared during a Server-initiated procedure. */&lt;/P&gt;&lt;P&gt;stephen gEvtError_c:error:0x5&lt;FONT color="#FF0000"&gt;(gBleOutOfMemory_c = gBleStatusBase_c | 0x05, /*!&amp;lt; An internal memory allocation failed. */)&lt;/FONT&gt;,procedureType:0x2（&lt;FONT color="#FF0000"&gt; gSendNotification_c, /*!&amp;lt; Procedure initiated by GattServer_SendNotification. */）&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;I have been stuck with this problem for a long time,i need nxp team help&lt;/P&gt;</description>
      <pubDate>Mon, 17 May 2021 07:00:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1277432#M11165</guid>
      <dc:creator>shizelin</dc:creator>
      <dc:date>2021-05-17T07:00:06Z</dc:date>
    </item>
    <item>
      <title>Re: BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c</title>
      <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1277806#M11168</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope you are doing well. Could you please clarify what device are you using? Are you using one of our Development Boards? What SDK example are you using as a base? What modifications did you make?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you add the following definitions in your code?&lt;/P&gt;
&lt;LI-CODE lang="c"&gt;#define gUsePanic_c 1
#define MEM_TRACKING
#define MEM_STATISTICS
#define MEM_DEBUG
#define MEM_DEBUG_OUT_OF_MEMORY&lt;/LI-CODE&gt;
&lt;P&gt;With this, we might be able to identify the issue you are facing, as the definitions trigger some Panic() and print some memory logs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;/P&gt;
&lt;P&gt;Ricardo&lt;/P&gt;</description>
      <pubDate>Mon, 17 May 2021 23:36:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1277806#M11168</guid>
      <dc:creator>Ricardo_Zamora</dc:creator>
      <dc:date>2021-05-17T23:36:48Z</dc:date>
    </item>
    <item>
      <title>Thank you for your replyRe: BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c</title>
      <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278148#M11169</link>
      <description>&lt;P&gt;Thank you for your reply&lt;/P&gt;&lt;P&gt;we use the device:&lt;FONT color="#FF0000"&gt;MKW31Z512XXX4&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;base sdk is:&lt;FONT color="#FF0000"&gt;&lt;SPAN&gt;SDK_2.X_MKW31Z512XXX4&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;we &lt;SPAN&gt;modifications：&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#define &lt;FONT color="#FF0000"&gt;mHeartRateReportInterval_c&lt;/FONT&gt; (10)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;static void BleApp_ConnectionCallback (deviceId_t peerDeviceId, gapConnectionEvent_t* pConnectionEvent)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;----&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;switch (pConnectionEvent-&amp;gt;eventType)&lt;BR /&gt;{&lt;BR /&gt;case gConnEvtConnected_c:&lt;BR /&gt;{&lt;BR /&gt;Hrs_Subscribe(peerDeviceId);&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;BleApp_StartHeartRate&lt;/FONT&gt;(mHeartRateReportInterval_c);&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;....&lt;BR /&gt;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;---&amp;gt;void BleApp_StartHeartRate(uint16_t mtime)&lt;BR /&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;TMR_StartLowPowerTimer(mHeartRateMeasurementTimerId, gTmrLowPowerIntervalMillisTimer_c,&lt;BR /&gt;TmrMilliseconds(mtime), &lt;FONT color="#FF0000"&gt;HeartRateMeasurementTimerCallback&lt;/FONT&gt;, NULL);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;-----&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;static hrsUserData_t hrsUserData;&lt;BR /&gt;static hrsConfig_t hrsServiceConfig = {service_heart_rate, TRUE, FALSE, TRUE, gHrs_BodySensorLocOther_c, &amp;amp;hrsUserData};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;void HeartRateMeasurementTimerCallback(void * pParam)&lt;BR /&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;uint16_t hr=0,hs=0,energy = 0;&lt;BR /&gt;rtc_datetime_t date;&lt;BR /&gt;uint16_t hr_l = 0,hr_c=0,hr_r=0;&lt;BR /&gt;hr_l = ADC16_Mic0();&lt;BR /&gt;hs = hr_c = ADC16_Mic1();&lt;BR /&gt;hr_r = ADC16_Mic2();&lt;BR /&gt;hr=(hr_r + hr_l)/2 - hr_c;&lt;BR /&gt;if(hr &amp;lt; 0)&lt;BR /&gt;hr = 0;&lt;BR /&gt;if(hrsUserData.cRrIntervals == gHrs_NumOfRRIntervalsRecorded_c){&lt;BR /&gt;if(hs &amp;lt; hs_tmp)&lt;BR /&gt;hs = hs_tmp;&lt;BR /&gt;hs_tmp = 0;&lt;BR /&gt;Hrs_AddExpendedEnergy(&amp;amp;hrsUserData, energy,hs);&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;Hrs_RecordHeartRateMeasurement&lt;/FONT&gt;(service_heart_rate, hr, &amp;amp;hrsUserData);&lt;BR /&gt;&lt;BR /&gt;}else&lt;BR /&gt;{&lt;BR /&gt;//PRINTF("stephen not 7 hr=0x%x,hs=0x%x,hs_tmp=0x%x\r\n",hr,hs,hs_tmp);&lt;BR /&gt;if(hs &amp;gt; hs_tmp)&lt;BR /&gt;hs_tmp = hs;//add stephen&lt;BR /&gt;Hrs_RecordRRInterval(&amp;amp;hrsUserData,hr);&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;==============&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for&amp;nbsp;&lt;FONT color="#FF0000"&gt;Hrs_RecordHeartRateMeasurement&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;typedef struct hrsUserData_tag&lt;BR /&gt;{&lt;BR /&gt;#if gHrs_EnableRRIntervalMeasurements_d&lt;BR /&gt;/*! Heart Rate Service - RR Interval Measurements Buffer*/&lt;BR /&gt;uint16_t *pStoredRrIntervals;&lt;/P&gt;&lt;P&gt;/*! Heart Rate Service - RR Interval Count*/&lt;BR /&gt;uint8_t cRrIntervals;&lt;/P&gt;&lt;P&gt;/*! Heart Rate Service - Current Position in RR Interval Measurements Vector*/&lt;BR /&gt;uint8_t rrCursor;&lt;BR /&gt;#endif&lt;BR /&gt;/*! Heart Rate Service - Expended Energy Values */&lt;BR /&gt;uint16_t expendedEnergy;&lt;/P&gt;&lt;P&gt;uint16_t adc_Hs;&lt;/P&gt;&lt;P&gt;}hrsUserData_t;&lt;/P&gt;&lt;P&gt;void Hrs_AddExpendedEnergy(hrsUserData_t *pHrsUserData, uint16_t energy,uint16_t hs)&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;pHrsUserData-&amp;gt;expendedEnergy = energy;// no use&lt;BR /&gt;pHrsUserData-&amp;gt;adc_Hs = hs;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;bleResult_t Hrs_RecordHeartRateMeasurement (uint16_t serviceHandle, uint16_t heartRate, hrsUserData_t *pHrsUserData)&lt;BR /&gt;{&lt;BR /&gt;uint16_t hValueHrMeasurement;&lt;BR /&gt;bleResult_t result;&lt;BR /&gt;bleUuid_t uuid = Uuid16(gBleSig_HrMeasurement_d);&lt;BR /&gt;//PRINTF("Hrs_RecordHeartRateMeasurement\r\n");&lt;/P&gt;&lt;P&gt;/* Get handle of Heart Rate Measurement characteristic */&lt;BR /&gt;result = GattDb_FindCharValueHandleInService(serviceHandle,&lt;BR /&gt;gBleUuidType16_c, &amp;amp;uuid, &amp;amp;hValueHrMeasurement);&lt;/P&gt;&lt;P&gt;if (result != gBleSuccess_c)&lt;BR /&gt;return result;&lt;/P&gt;&lt;P&gt;/* Update characteristic value and send notification */&lt;BR /&gt;if (!&lt;FONT color="#FF0000"&gt;Hrs_UpdateHrmCharacteristic&lt;/FONT&gt;(hValueHrMeasurement, heartRate, pHrsUserData))&lt;BR /&gt;{&lt;BR /&gt;Hrs_SendNotifications(hValueHrMeasurement);&lt;BR /&gt;}&lt;BR /&gt;return gBleSuccess_c;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;====&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for&amp;nbsp;&lt;FONT color="#FF0000"&gt;Hrs_UpdateHrmCharacteristic&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT color="#FF0000"&gt;#define Hrs_MaxNotificationSize 20&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;static uint8_t characteristic[Hrs_MaxNotificationSize];&lt;BR /&gt;static bleResult_t Hrs_UpdateHrmCharacteristic&lt;BR /&gt;(&lt;BR /&gt;uint16_t handle,&lt;BR /&gt;uint16_t heartRate,&lt;BR /&gt;hrsUserData_t *pHrsUserData&lt;BR /&gt;){&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;uint8_t index = 0;&lt;BR /&gt;uint8_t flag = 0;&lt;BR /&gt;uint32_t date_s;&lt;BR /&gt;#if gHrs_EnableRRIntervalMeasurements_d&lt;BR /&gt;uint8_t iRRIntervalsCount;&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;/* Add flags */&lt;/P&gt;&lt;P&gt;Hrs_GetHrmFlags(handle, &amp;amp;flag);//add stephen&lt;/P&gt;&lt;P&gt;/* Add HR Value*/&lt;BR /&gt;if (Hrs_GetHeartRateFormat(heartRate) &amp;amp; gHrs_16BitHeartRateFormat_c)&lt;BR /&gt;{&lt;BR /&gt;//PRINTF("stephen HR Value 16 bit\r\n");&lt;BR /&gt;//characteristic[0] |= gHrs_16BitHeartRateFormat_c;//modify stephen&lt;BR /&gt;flag |= gHrs_16BitHeartRateFormat_c;&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;heartRate, sizeof(uint16_t));&lt;BR /&gt;index++;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;//characteristic[0] &amp;amp;= ~gHrs_16BitHeartRateFormat_c; //modify stephen&lt;BR /&gt;flag |= gHrs_16BitHeartRateFormat_c;//add stephen&lt;BR /&gt;characteristic[index] = (uint8_t) heartRate;&lt;BR /&gt;}&lt;BR /&gt;index++;&lt;BR /&gt;if (characteristic[0] &amp;amp; gHrs_SensorContactSupported_c)&lt;BR /&gt;{&lt;BR /&gt;//uint16_t nr = ADC16_Mic1();&lt;BR /&gt;uint16_t nr = pHrsUserData-&amp;gt;adc_Hs;&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;nr, sizeof(uint16_t));&lt;BR /&gt;index += sizeof(uint16_t);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (flag &amp;amp; gHrs_EnergyExpendedEnabled_c)//add stephen&lt;BR /&gt;{&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;pHrsUserData-&amp;gt;expendedEnergy, sizeof(uint16_t));&lt;BR /&gt;index += sizeof(uint16_t);&lt;BR /&gt;}&lt;BR /&gt;#if gHrs_EnableRRIntervalMeasurements_d&lt;BR /&gt;/* Add RR Intervals */&lt;BR /&gt;if (pHrsUserData-&amp;gt;cRrIntervals &amp;gt; 0)&amp;nbsp;&lt;BR /&gt;{&lt;BR /&gt;iRRIntervalsCount = MIN(&lt;BR /&gt;(Hrs_MaxNotificationSize - index) / sizeof(uint16_t),&lt;BR /&gt;pHrsUserData-&amp;gt;cRrIntervals);&lt;BR /&gt;&lt;BR /&gt;//characteristic[0] |= gHrs_RrIntervalsEnabled_c; //modify stephen&lt;BR /&gt;flag |= gHrs_RrIntervalsEnabled_c; //add stephen&lt;BR /&gt;//PRINTF("stephen indexa=%d,iRRIntervalsCount=%d,cRrIntervals=%d,Hrs_MaxNotificationSize=%d\r\n",index,iRRIntervalsCount,pHrsUserData-&amp;gt;cRrIntervals,Hrs_MaxNotificationSize);&lt;BR /&gt;if (pHrsUserData-&amp;gt;rrCursor + iRRIntervalsCount &amp;gt; gHrs_NumOfRRIntervalsRecorded_c)&lt;BR /&gt;{&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index],&lt;BR /&gt;&amp;amp;pHrsUserData-&amp;gt;pStoredRrIntervals[pHrsUserData-&amp;gt;rrCursor],&lt;BR /&gt;(gHrs_NumOfRRIntervalsRecorded_c - pHrsUserData-&amp;gt;rrCursor)&lt;BR /&gt;* sizeof(uint16_t));&lt;BR /&gt;&lt;BR /&gt;index += (gHrs_NumOfRRIntervalsRecorded_c - pHrsUserData-&amp;gt;rrCursor) * sizeof(uint16_t);&lt;/P&gt;&lt;P&gt;FLib_MemCpy(&amp;amp;characteristic[index], &amp;amp;pHrsUserData-&amp;gt;pStoredRrIntervals[0],&lt;BR /&gt;(iRRIntervalsCount + pHrsUserData-&amp;gt;rrCursor&lt;BR /&gt;- gHrs_NumOfRRIntervalsRecorded_c) * sizeof(uint16_t));&lt;BR /&gt;&lt;BR /&gt;index += (iRRIntervalsCount + pHrsUserData-&amp;gt;rrCursor&lt;BR /&gt;- gHrs_NumOfRRIntervalsRecorded_c) * sizeof(uint16_t);&lt;BR /&gt;//PRINTF("stephen indexb=%d\r\n",index);&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;FLib_MemCpy(&amp;amp;characteristic[index],&lt;BR /&gt;&amp;amp;pHrsUserData-&amp;gt;pStoredRrIntervals[0],&lt;BR /&gt;iRRIntervalsCount * sizeof(uint16_t));&lt;BR /&gt;index += iRRIntervalsCount * sizeof(uint16_t);&lt;BR /&gt;//PRINTF("stephen indexc=%d\r\n",index);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Update circular buffer */&lt;BR /&gt;pHrsUserData-&amp;gt;rrCursor = (pHrsUserData-&amp;gt;rrCursor + iRRIntervalsCount)&lt;BR /&gt;% gHrs_NumOfRRIntervalsRecorded_c;&lt;BR /&gt;pHrsUserData-&amp;gt;cRrIntervals -= iRRIntervalsCount;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;#endif /* gHrs_EnableRRIntervalMeasurements_d */&lt;BR /&gt;return GattDb_WriteAttribute(handle, index, &amp;amp;characteristic[0]);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;===&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;bluetooth\profiles\heart_rate&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PRIMARY_SERVICE(service_heart_rate, gBleSig_HeartRateService_d)&lt;BR /&gt;CHARACTERISTIC(char_hr_measurement, gBleSig_HrMeasurement_d, (gGattCharPropNotify_c))&lt;BR /&gt;VALUE_VARLEN(value_hr_measurement, gBleSig_HrMeasurement_d, (gPermissionNone_c), 20, 2, 0x00, 0xB4)&lt;BR /&gt;CCCD(cccd_hr_measurement)&lt;BR /&gt;CHARACTERISTIC(char_body_sensor_location, gBleSig_BodySensorLocation_d, (gGattCharPropRead_c) )&lt;BR /&gt;VALUE(value_body_sensor_location, gBleSig_BodySensorLocation_d, (gPermissionFlagReadable_c), 1, 0x01)&lt;BR /&gt;CHARACTERISTIC(char_hr_ctrl_point, gBleSig_HrControlPoint_d, (gGattCharPropWrite_c | gGattCharPropRead_c) )&lt;BR /&gt;VALUE(value_hr_ctrl_point, gBleSig_HrControlPoint_d, (gPermissionFlagReadable_c | gPermissionFlagWritable_c), 7, 20,19,9,2,14,19,30)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 May 2021 09:51:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278148#M11169</guid>
      <dc:creator>shizelin</dc:creator>
      <dc:date>2021-05-18T09:51:17Z</dc:date>
    </item>
    <item>
      <title>Re: BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c</title>
      <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278155#M11170</link>
      <description>&lt;P&gt;i will do that&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;#define gUsePanic_c 1
#define MEM_TRACKING
#define MEM_STATISTICS
#define MEM_DEBUG
#define MEM_DEBUG_OUT_OF_MEMORY&lt;/PRE&gt;&lt;P&gt;and&amp;nbsp;Reply as soon as possible&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 May 2021 09:57:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278155#M11170</guid>
      <dc:creator>shizelin</dc:creator>
      <dc:date>2021-05-18T09:57:51Z</dc:date>
    </item>
    <item>
      <title>Re: BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c</title>
      <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278287#M11171</link>
      <description>&lt;P&gt;hi nxp team:&lt;/P&gt;&lt;P&gt;after i add:&lt;/P&gt;&lt;PRE&gt;#define gUsePanic_c 1
#define MEM_TRACKING
#define MEM_STATISTICS
#define MEM_DEBUG
#define MEM_DEBUG_OUT_OF_MEMORY&lt;BR /&gt;&lt;SPAN&gt;framework\memmanager\source\&lt;FONT color="#FF6600"&gt;MemManager&lt;/FONT&gt;.c&lt;BR /&gt;void* MEM_BufferAllocWithId&lt;BR /&gt;(&lt;BR /&gt;uint32_t numBytes,&lt;BR /&gt;uint8_t poolId,&lt;BR /&gt;void *pCaller&lt;BR /&gt;){&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;{&lt;BR /&gt;#ifdef MEM_TRACKING&lt;BR /&gt;/* Save the Link Register */&lt;BR /&gt;volatile uint32_t savedLR = (uint32_t) __get_LR();&lt;BR /&gt;#endif&lt;BR /&gt;#if defined(MEM_TRACKING) || defined(MEM_DEBUG_OUT_OF_MEMORY)&lt;BR /&gt;uint16_t requestedSize = numBytes;&lt;BR /&gt;#endif /*MEM_TRACKING*/&lt;BR /&gt;#ifdef MEM_STATISTICS&lt;BR /&gt;bool_t allocFailure = FALSE;&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;pools_t *pPools = memPools;&lt;BR /&gt;listHeader_t *pBlock;&lt;/P&gt;&lt;P&gt;OSA_InterruptDisable();&lt;BR /&gt;&lt;BR /&gt;while(numBytes)&lt;BR /&gt;{&lt;BR /&gt;if( (numBytes &amp;lt;= pPools-&amp;gt;blockSize) &amp;amp;&amp;amp; (poolId == pPools-&amp;gt;poolId) )&lt;BR /&gt;{&lt;BR /&gt;pBlock = (listHeader_t *)ListRemoveHead((listHandle_t)&amp;amp;pPools-&amp;gt;anchor);&lt;BR /&gt;&lt;BR /&gt;if(NULL != pBlock)&lt;BR /&gt;{&lt;BR /&gt;pBlock++;&lt;BR /&gt;gFreeMessagesCount--;&lt;BR /&gt;pPools-&amp;gt;allocatedBlocks++;&lt;BR /&gt;&lt;BR /&gt;#ifdef MEM_STATISTICS&lt;BR /&gt;if(gFreeMessagesCount &amp;lt; gFreeMessagesCountMin)&lt;BR /&gt;{&lt;BR /&gt;gFreeMessagesCountMin = gFreeMessagesCount;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;pPools-&amp;gt;poolStatistics.allocatedBlocks++;&lt;BR /&gt;if ( pPools-&amp;gt;poolStatistics.allocatedBlocks &amp;gt; pPools-&amp;gt;poolStatistics.allocatedBlocksPeak )&lt;BR /&gt;{&lt;BR /&gt;pPools-&amp;gt;poolStatistics.allocatedBlocksPeak = pPools-&amp;gt;poolStatistics.allocatedBlocks;&lt;BR /&gt;}&lt;BR /&gt;MEM_ASSERT(pPools-&amp;gt;poolStatistics.allocatedBlocks &amp;lt;= pPools-&amp;gt;poolStatistics.numBlocks);&lt;BR /&gt;#endif /*MEM_STATISTICS*/&lt;BR /&gt;&lt;BR /&gt;#ifdef MEM_TRACKING&lt;BR /&gt;//PRINTF("stephen panic MEM_BufferAllocWithId MEM_TRACKING_ALLOC_c\r\n");&lt;BR /&gt;MEM_Track(pBlock, MEM_TRACKING_ALLOC_c, savedLR, requestedSize, pCaller);&lt;BR /&gt;#endif /*MEM_TRACKING*/&lt;BR /&gt;OSA_InterruptEnable();&lt;BR /&gt;return pBlock;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;#ifdef MEM_STATISTICS&lt;BR /&gt;if(!allocFailure)&lt;BR /&gt;{&lt;BR /&gt;pPools-&amp;gt;poolStatistics.allocationFailures++;&lt;BR /&gt;allocFailure = TRUE;&lt;BR /&gt;}&lt;BR /&gt;#endif /*MEM_STATISTICS*/&lt;BR /&gt;if(numBytes &amp;gt; pPools-&amp;gt;nextBlockSize)&lt;BR /&gt;{&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;/* No more blocks of that size, try next size. */&lt;BR /&gt;numBytes = pPools-&amp;gt;nextBlockSize;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;/* Try next pool*/&lt;BR /&gt;if(pPools-&amp;gt;nextBlockSize)&lt;BR /&gt;{&lt;BR /&gt;pPools++;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;numBytes = 0;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;#ifdef MEM_DEBUG_OUT_OF_MEMORY&lt;BR /&gt;if (requestedSize)&lt;BR /&gt;{&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;PRINTF("stephen panic MEM_BufferAllocWithId requestedSize\r\n");&lt;/FONT&gt;&lt;BR /&gt;panic( 0, (uint32_t)MEM_BufferAllocWithId, 0, 0);&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;OSA_InterruptEnable();&lt;BR /&gt;return NULL;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;===&lt;/P&gt;&lt;P&gt;When the problem recurs&amp;nbsp; we got the log：&lt;/P&gt;&lt;P&gt;stephen Hrs_SendNotifications&lt;BR /&gt;stephen Hrs result:0x0&lt;BR /&gt;stephen Hrs_SendNotifications&lt;BR /&gt;stephen Hrs result:0x0&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;stephen panic MEM_BufferAllocWithId requestedSize&lt;/FONT&gt;&lt;BR /&gt;stephen panic id:0x0,location:0x283f1&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 May 2021 14:20:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1278287#M11171</guid>
      <dc:creator>shizelin</dc:creator>
      <dc:date>2021-05-18T14:20:37Z</dc:date>
    </item>
    <item>
      <title>Re: BleApp_GattServerCallback get a error:procedureError gBleOutOfMemory_c</title>
      <link>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1280077#M11176</link>
      <description>&lt;P&gt;hi nxp team:&lt;/P&gt;&lt;P&gt;To this question,&lt;/P&gt;&lt;P&gt;There is a new discovery&lt;/P&gt;&lt;P&gt;for my code&lt;/P&gt;&lt;P&gt;#define &lt;FONT color="#FF0000"&gt;mHeartRateReportInterval_c&lt;/FONT&gt; (10)&lt;BR /&gt;BleApp_StartHeartRate(mHeartRateReportInterval_c);&lt;BR /&gt;void BleApp_StartHeartRate(uint16_t mtime)&lt;BR /&gt;{&lt;BR /&gt;TMR_StartLowPowerTimer(mHeartRateMeasurementTimerId, gTmrLowPowerIntervalMillisTimer_c,&lt;BR /&gt;TmrMilliseconds(mtime), HeartRateMeasurementTimerCallback, NULL);&lt;BR /&gt;}&lt;BR /&gt;when i change &lt;FONT color="#FF0000"&gt;mHeartRateReportInterval_c&lt;/FONT&gt; from 10ms to 20ms,&lt;BR /&gt;#define mHeartRateReportInterval_c (10) change to #define mHeartRateReportInterval_c (20)&lt;/P&gt;&lt;P&gt;There's nothing wrong with it，and no error:procedureError gBleOutOfMemory_c&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;but When mheartrateReportInterval_c is less than 10,there are must be a err&lt;/FONT&gt;:procedureError gBleOutOfMemory_c,and for our need,mheartrateReportInterval_c must set to 10ms,How to solve this problem?&lt;/P&gt;</description>
      <pubDate>Fri, 21 May 2021 03:46:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Wireless-MCU/BleApp-GattServerCallback-get-a-error-procedureError/m-p/1280077#M11176</guid>
      <dc:creator>shizelin</dc:creator>
      <dc:date>2021-05-21T03:46:06Z</dc:date>
    </item>
  </channel>
</rss>

