MESH callback is not properly called when multiple models registered in an element

Tue, 2020-01-07 18:21 -- firebird

When designing MESH device, it is possible for an element to contain multiple models inside.

For example, we can register a generic level server and a level client into an element, and it is so-called "control model".

But, in current SDK 1.6.1, only one model can call its callback, in my case, MS_ACCESS_GENERIC_LEVEL_STATUS_OPCODE is received in level server, but not in level client.

Is this behaviour by design, or bug?

MESH message is fragmented even when it should not be

Mon, 2019-12-23 13:59 -- firebird

Hi teams,

AFAIK, MESH model 1.0 specification defines each model messages not to be fragmented.

So, when we use SIG-defined model, each message SHOULD NOT be fragmented, if we make a size mistake.

According to the specification, a single packet can deliver 8,9,10 bytes of message data when using 3,2,1 bytes opcode each.


But, when I tested with MS_access_publish() function, packet fragmentation occurs when more than 5,6,7 bytes are in a packet.

In the other word, MESH SDK handles 3 bytes less than specification.


Difference between write and write no response

Sun, 2019-12-22 06:07 -- nigelyang

hi Dialog,

    I am curious about the response handling for the two cases "GATT_PROP_WRITE" and "GATT_PROP_WRITE_NO_RESP".  They both seem to use ble_gatts_write_cfm() to response the write request according to the desciption of ble_gatts_write_cfm().  I think the case of "GATT_PROP_WRITE_NO_RESP" should not use ble_gatts_write_cfm() to do a response to client, does it? Or "GATT_PROP_WRITE" should use ble_gatts_write_cfm() twice, and "GATT_PROP_WRITE" just use one. How to handle "with response"  and "without response" in coding? 

 thanks for your help. 


Using Custom OpCode in MESH vendor model

Wed, 2019-12-18 06:33 -- firebird

I am using MESH SDK 1.6.1 and tried to modify vendor model for specific uasge.

When I tried to change Vendor OpCode, the following error occurs and not working.


[** ERR **]:[access_api.c]:[833]: [ACCESS] Check FAILED for 3 Octet Opcode 0x00A000D2


If I changed back to the original definition, i.e. to 0x00C000D2, it works.

Why this happens, and how can I change this behaviour?


Subscribe to RSS - DA1468x