This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Bluetopia Callback function of GATT profile stop being invoked after moving from 5190BT to 5335

Other Parts Discussed in Thread: MSP430F5335, CC2564, CC2541, CC2540

We have a MSP430F5190 + CC2564 (Bluetopia) prototype and is moving to MSP430F5335 + CC2564.

In our application an iOS device keeps sending/reading data to

our private GATT profile device after the connection is build.

With 5190 our firmware already works fine but with 5335, from UART and IAR debuggert we observe that

with 5335 GATT profile would stop getting any data from iOS after running a few minutes.

After this happens, if we keep stop and restart iOS App,

we can observe the BLE connection is being disconnected

and reconnected successfully, but still GATT profile call back function is never being called again.

(unless a reset of MSP430)

Also CC2541 sniffer can continue capture ADV packet from 5335. 

These observations indicate that lower layers of BLE stask (GAP, HCI) are till alive, it can handle connection event call backs.

GAP_LE_Event_Callback and GATT_Connection_Event_Callback are called properly.

But GATT_Server_Event_Callback of BLE stack is no longer being called.


What could lead to such weird problem? the only difference seems that

5335 and 5190BT have different memory space

  • Hi,

    It is hard to pinpoint the exact reason why this would occur. 

    1) Can you verify that the iOS device is connected to the 5335 (i.e. do you see GAPLE connection complete events)?  

    2) Have you verified the UART?  Could you provide us UART logs so that we can take a closer look at the issue?

    Thanks,

    Stonestreet One.

  • 8468.5190BT_GATT_Data_OK.psd5481.5335NoGATT_Data_AfterAWhile2.psd

    I attached two captured files of CC2540 BLE Sniffer.

    1)  In the file " 5335NoGATT_Data_AfterAWhile2.psd " , we can observe that Packet No.3944 is ATT_Write_req

    did not receive its ATT_Write_Rsp and after that iOS device no longer send request any more.

    Notice: no ATT_Write_Rsp is not due to any wrong in user application, but because event etGATT_Server_Write_Request is never called, therefore user GATT profile

    did not receive any data and of course did not response

    Before that there are multiple times of no resp to ATT_Write_req, or two response back to back.

    The below is summary.

    1433 not respones
    1509 not respones
    1641 not respones

    1703 -1705 dual resp

    1895 not respones

    3093 - 3100 dual resp

    3529 not respones

    3824 - 3825 dural resp

    3829 no response

    3847 no response

    2) Originally I thought probably those lost resp cause iOS stopping send new write request.

    But after looking at the file " 5190BT_GATT_Data_OK.psd ",   it did the same : periodically miss a response but iOS tries to resend and finally gets responses and everything continues

    But with 5535, it seems BLE stack at GATT layer stops response, but underying L2CAP, HCI still works

    The below is UART output

    //<---------------------------------------- UART Log file---------------------------------------------------->

    etLE_Connection_Complete with size 18.
    BD_ADDR: 0x68E61B833DE9.
    etGATT_Connection_Device_Connection with size 12:
    Connection ID: 6.
    Remote Device: 0x68E61B833DE9.


    SET_COLOR RSP <-- each line indicate BLE device received one etGATT_Server_Write_Request and responsed
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    SET_COLOR RSP
    <------ stop receiving and etGATT_Server_Write_Request


    etGATT_Connection_Device_Disconnection with size 10:
    Remote Device: 0x68E61B833DE9.


    etLE_Disconnection_Complete with size 9.
    Reason: 0x13.
    BD_ADDR: 0x68E61B833DE9.  <----- connection was destroyed by iOS, probably because time out (not receiving any response from GATT Sever)



    etLE_Connection_Complete with size 18.  <------ restart iOS App, automatically connected with BLE device again, but not receiving any Write request any more
    BD_ADDR: 0x68E61B833DE9.

    etGATT_Connection_Device_Connection with size 12:
    Connection ID: 7.
    Remote Device: 0x68E61B833DE9.


    etGATT_Connection_Device_Disconnection with size 10: <----------- after about 20 seconds, connection automatically disconnected by iOS
    Remote Device: 0x68E61B833DE9.

    etLE_Disconnection_Complete with size 9.
    Reason: 0x13.
    BD_ADDR: 0x68E61B833DE9.
    etGATT_Connection_Device_Disconnection with size 10:
    Remote Device: 0x68E61B833DE9.

    etLE_Connection_Complete with size 18.  <------ restart iOS App, automatically connected with BLE device again, but not receiving any Write request any more
    BD_ADDR: 0x68E61B833DE9.

    etGATT_Connection_Device_Connection with size 12:
    Connection ID: 8.
    Remote Device: 0x68E61B833DE9.


    etLE_Disconnection_Complete with size 9.

    Reason: 0x13.
    BD_ADDR: 0x68E61B833DE9.
    etGATT_Connection_Device_Disconnection with size 10:<----------- after about 20 seconds, connection automatically disconnected by iOS
    Remote Device: 0x68E61B833DE9.



  • 6281.5335NoGATT_Data_Reconnect1.psd

    The attached capture file "5335NoGATT_Data_Reconnect1.psd"

    shows that after BLE device stops response write_request, 

    if we restarted iOS App and the connection is reestablished, we can observe

    iOS sent out ATT_Find_By_Type_Value_Req, but BLE device does not respond with 

    ATT_Find_By_Type_Value_Resp

    It seems something wrong with highlighted layers in stack when running on 5335.

  • Hi,

    This looks like there is an issue with the porting. Can you verify that the UART is not losing bytes and that the stack size is set to be large enough so that the application isn’t crashing?

    Thanks,

    Stonestreet One.

  • The UART for HCI  DID NOT print anything like "?" (overrun )   or ">" (invalid start).

    Application looks fine even after not receiving any GATT call back event: we can still use debug UART to interact with application. ( We added some UART command to check memory usage, some variables inside application, etc)

    And I will try larger stack size to see whether it makes difference.

    UPATE: Just tried increase stack size, make no difference.

    Since we are trying to track down why GATT Server event call back is not triggered,

    is there any way we can debug to check which layer of the following call stack causes the problem?

    Difference between 5335 and 5190BT (5383A).

    5335 code memory space starts 0x8000 

    5190BT code memory space starts 0x5c00

    So when rebuilding the code for 5335, the project uses more 20bit address space than 5190BT, does this ring any bell?

    Thanks

  • Any other interesting observation, I added a counter to see how may GATT Sever Write Event received before

    "GATT event is dead"

    SET_COLOR RSP 226
    SET_COLOR RSP 227
    SET_COLOR RSP 228
    SET_COLOR RSP 229
    SET_COLOR RSP 230
    SET_COLOR RSP 231
    SET_COLOR RSP 232
    SET_COLOR RSP 233
    SET_COLOR RSP 234
    SET_COLOR RSP 235
    SET_COLOR RSP 236
    SET_COLOR RSP 237
    SET_COLOR RSP 238
    SET_COLOR RSP 239
    SET_COLOR RSP 240
    SET_COLOR RSP 241
    SET_COLOR RSP 242
    SET_COLOR RSP 243
    SET_COLOR RSP 244
    SET_COLOR RSP 245
    SET_COLOR RSP 246
    SET_COLOR RSP 247
    SET_COLOR RSP 248
    SET_COLOR RSP 249
    SET_COLOR RSP 250

    And the last one is always a number of 250 or 246

    So my guess is that along the protocol stack from HCI to GATT Server, there is a related counter. 

    And when porting to 20-bit code memory, its related constant or function not perform 

    as expected any more. 

    Does my logic sound reasonable?

  • I did some further experiment.

    1) In previous experiment, every GATT Write event writes 6 bytes to BLE peripheral, and 

    the "death" happens after 250 or 246 such transactions.

    2) If I mix large GATT Write request with small GATT Write request,

    the "death" happens after 249 transactions.(Each large write requests  involves 

    multple PrepareWrite and Execute_Write

    -------------- Mix Small and Large Write Requests -----------------------

    Write clien char

    RSP config 0
    RSP 1
    QUERY_ROUTING RSP 2
    GET_NEXT_ALARM_TIME RSP 3
    bytes_send = 0x8
    GET_DATE_TIME RSP 4
    bytes_send = 0xa
    RSP_DelayWrite 5
    RSP_DelayWrite 6
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 7
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 61 10 44 48 03 3E 01 00 FC 2D
    RSP 8
    GET_NEXT_ALARM_TIME RSP 9
    bytes_send = 0x8
    RSP_DelayWrite 10
    RSP_DelayWrite 11
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 12
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 13
    GET_NEXT_ALARM_TIME RSP 14
    bytes_send = 0x8
    RSP_DelayWrite 15
    RSP_DelayWrite 16
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 17
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 18
    GET_NEXT_ALARM_TIME RSP 19
    bytes_send = 0x8
    RSP_DelayWrite 20
    RSP_DelayWrite 21
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 22
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 23
    GET_NEXT_ALARM_TIME RSP 24
    bytes_send = 0x8
    RSP_DelayWrite 25
    RSP_DelayWrite 26
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 27
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 28
    GET_NEXT_ALARM_TIME RSP 29
    bytes_send = 0x8
    RSP_DelayWrite 30
    RSP_DelayWrite 31
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 32
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 33
    GET_NEXT_ALARM_TIME RSP 34
    bytes_send = 0x8
    RSP_DelayWrite 35
    RSP_DelayWrite 36
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 37
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 38
    GET_NEXT_ALARM_TIME RSP 39
    bytes_send = 0x8
    RSP_DelayWrite 40
    RSP_DelayWrite 41
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 42
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 43
    GET_NEXT_ALARM_TIME RSP 44
    bytes_send = 0x8
    RSP_DelayWrite 45
    RSP_DelayWrite 46
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 47
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 48
    GET_NEXT_ALARM_TIME RSP 49
    bytes_send = 0x8
    RSP_DelayWrite 50
    RSP_DelayWrite 51
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 52
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 53
    GET_NEXT_ALARM_TIME RSP 54
    bytes_send = 0x8
    RSP_DelayWrite 55
    RSP_DelayWrite 56
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 57
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 58
    GET_NEXT_ALARM_TIME RSP 59
    bytes_send = 0x8
    RSP_DelayWrite 60
    RSP_DelayWrite 61
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 62
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 63
    GET_NEXT_ALARM_TIME RSP 64
    bytes_send = 0x8
    RSP_DelayWrite 65
    RSP_DelayWrite 66
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 67
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 68
    GET_NEXT_ALARM_TIME RSP 69
    bytes_send = 0x8
    RSP_DelayWrite 70
    RSP_DelayWrite 71
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 72
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 73
    GET_NEXT_ALARM_TIME RSP 74
    bytes_send = 0x8
    RSP_DelayWrite 75
    RSP_DelayWrite 76
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 77
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 78
    GET_NEXT_ALARM_TIME RSP 79
    bytes_send = 0x8
    RSP_DelayWrite 80
    RSP_DelayWrite 81
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 82
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 83
    GET_NEXT_ALARM_TIME RSP 84
    bytes_send = 0x8
    RSP_DelayWrite 85
    RSP_DelayWrite 86
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 87
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 88
    GET_NEXT_ALARM_TIME RSP 89
    bytes_send = 0x8
    RSP_DelayWrite 90
    RSP_DelayWrite 91
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 92
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 93
    GET_NEXT_ALARM_TIME RSP 94
    bytes_send = 0x8
    RSP_DelayWrite 95
    RSP_DelayWrite 96
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 97
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 98
    GET_NEXT_ALARM_TIME RSP 99
    bytes_send = 0x8
    RSP_DelayWrite 100
    RSP_DelayWrite 101
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 102
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 103
    GET_NEXT_ALARM_TIME RSP 104
    bytes_send = 0x8
    RSP_DelayWrite 105
    RSP_DelayWrite 106
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 107
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 108
    GET_NEXT_ALARM_TIME RSP 109
    bytes_send = 0x8
    RSP_DelayWrite 110
    RSP_DelayWrite 111
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 112
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 113
    GET_NEXT_ALARM_TIME RSP 114
    bytes_send = 0x8
    RSP_DelayWrite 115
    RSP_DelayWrite 116
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 117
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 118
    GET_NEXT_ALARM_TIME RSP 119
    bytes_send = 0x8
    RSP_DelayWrite 120
    RSP_DelayWrite 121
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 122
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 123
    GET_NEXT_ALARM_TIME RSP 124
    bytes_send = 0x8
    RSP_DelayWrite 125
    RSP_DelayWrite 126
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 127
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 128
    GET_NEXT_ALARM_TIME RSP 129
    bytes_send = 0x8
    RSP_DelayWrite 130
    RSP_DelayWrite 131
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 132
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 133
    GET_NEXT_ALARM_TIME RSP 134
    bytes_send = 0x8
    RSP_DelayWrite 135
    RSP_DelayWrite 136
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 137
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 138
    GET_NEXT_ALARM_TIME RSP 139
    bytes_send = 0x8
    RSP_DelayWrite 140
    RSP_DelayWrite 141
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 142
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 143
    GET_NEXT_ALARM_TIME RSP 144
    bytes_send = 0x8
    RSP_DelayWrite 145
    RSP_DelayWrite 146
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 147
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 148
    GET_NEXT_ALARM_TIME RSP 149
    bytes_send = 0x8
    RSP_DelayWrite 150
    RSP_DelayWrite 151
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 152
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 153
    GET_NEXT_ALARM_TIME RSP 154
    bytes_send = 0x8
    RSP_DelayWrite 155
    RSP_DelayWrite 156
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 157
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 158
    GET_NEXT_ALARM_TIME RSP 159
    bytes_send = 0x8
    RSP_DelayWrite 160
    RSP_DelayWrite 161
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 162
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 163
    GET_NEXT_ALARM_TIME RSP 164
    bytes_send = 0x8
    RSP_DelayWrite 165
    RSP_DelayWrite 166
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 167
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 168
    GET_NEXT_ALARM_TIME RSP 169
    bytes_send = 0x8
    RSP_DelayWrite 170
    RSP_DelayWrite 171
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 172
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 173
    GET_NEXT_ALARM_TIME RSP 174
    bytes_send = 0x8
    RSP_DelayWrite 175
    RSP_DelayWrite 176
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 177
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 178
    GET_NEXT_ALARM_TIME RSP 179
    bytes_send = 0x8
    RSP_DelayWrite 180
    RSP_DelayWrite 181
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 182
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 183
    GET_NEXT_ALARM_TIME RSP 184
    bytes_send = 0x8
    RSP_DelayWrite 185
    RSP_DelayWrite 186
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 187
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 188
    GET_NEXT_ALARM_TIME RSP 189
    bytes_send = 0x8
    RSP_DelayWrite 190
    RSP_DelayWrite 191
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 192
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 193
    GET_NEXT_ALARM_TIME RSP 194
    bytes_send = 0x8
    RSP_DelayWrite 195
    RSP_DelayWrite 196
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 197
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 198
    GET_NEXT_ALARM_TIME RSP 199
    bytes_send = 0x8
    RSP_DelayWrite 200
    RSP_DelayWrite 201
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 202
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 203
    GET_NEXT_ALARM_TIME RSP 204
    bytes_send = 0x8
    RSP_DelayWrite 205
    RSP_DelayWrite 206
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 207
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 208
    GET_NEXT_ALARM_TIME RSP 209
    bytes_send = 0x8
    RSP_DelayWrite 210
    RSP_DelayWrite 211
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 212
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 213
    GET_NEXT_ALARM_TIME RSP 214
    bytes_send = 0x8
    RSP_DelayWrite 215
    RSP_DelayWrite 216
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 217
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 218
    GET_NEXT_ALARM_TIME RSP 219
    bytes_send = 0x8
    RSP_DelayWrite 220
    RSP_DelayWrite 221
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 222
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 223
    GET_NEXT_ALARM_TIME RSP 224
    bytes_send = 0x8
    RSP_DelayWrite 225
    RSP_DelayWrite 226
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 227
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 228
    GET_NEXT_ALARM_TIME RSP 229
    bytes_send = 0x8
    RSP_DelayWrite 230
    RSP_DelayWrite 231
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 232
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 233
    GET_NEXT_ALARM_TIME RSP 234
    bytes_send = 0x8
    RSP_DelayWrite 235
    RSP_DelayWrite 236
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 237
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 238
    GET_NEXT_ALARM_TIME RSP 239
    bytes_send = 0x8
    RSP_DelayWrite 240
    RSP_DelayWrite 241
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 242
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 243
    GET_NEXT_ALARM_TIME RSP 244
    bytes_send = 0x8
    RSP_DelayWrite 245
    RSP_DelayWrite 246
    SET_COLOR_PATTERN ssize = cSave scene data FF 00 00 00 FF 00 2C 01 00 00 00 00 00 FF 00 00 FF 00 2C 01 00 00 00 00
    RSP exe write 247
    SET_DAILY_ALARM Save alarm data 02 04 04 B2 02 11 44 48 03 3E 01 00 FC 2D
    RSP 248
    GET_NEXT_ALARM_TIME RSP 249  <------------------Dead 
    bytes_send = 0x8