// returns last received message uint32_t CMesh::receive(uint8_t handle) { uint8_t val[28]; uint16_t len; APP_ERROR_CHECK(rbc_mesh_value_get(handle, val, &len, NULL)); if (!len) return 0; return (uint32_t)val[0]; }
bool CMesh::receive(uint8_t handle, void** p_data, uint16_t& length) { assert(length <= MAX_MESH_MESSAGE_LEN, "value too long to send"); APP_ERROR_CHECK(rbc_mesh_value_get(handle, (uint8_t*)*p_data, &length, NULL)); //LOGi("recv ch: %d, len: %d", handle, length); return length != 0; }
void GPIOTE_IRQHandler(void) { NRF_GPIOTE->EVENTS_PORT = 0; for (uint8_t i = 0; i < 2; ++i) { if (NRF_GPIO->IN & (1 << (BUTTON_0 + i))) { uint8_t val[28]; uint16_t len; APP_ERROR_CHECK(rbc_mesh_value_get(i + 1, val, &len, NULL)); val[0] = !val[0]; led_config(i + 1, val[0]); APP_ERROR_CHECK(rbc_mesh_value_set(i + 1, &val[0], 1)); } } }