public void handlePacket(byte[] packet) { byte[] pack = packet; int handle = get_first_element(packet); while (handle != -1) { byte[] type_buf = get_element_type(pack, handle); if (this.OnElementParsed != null) { var element = new ElementDesc() { ElementType = (int)type_buf[0], Data = get_element_data(pack, handle), }; this.OnElementParsed(element); } switch ((int)type_buf[0]) { case ELEMENT_TYPE_FILE: handle_file(pack, handle); break; case ELEMENT_TYPE_GET_DATA: { byte[] data_buf = get_element_data(pack, handle); handle_activity(pack, handle); } break; case ELEMENT_TYPE_GET_GRID: { byte[] data_buf = get_element_data(pack, handle); if (this.OnSportsGridRead != null) this.OnSportsGridRead(data_buf); } break; case ELEMENT_TYPE_SN: { byte[] data_buf = get_element_data(pack, handle); string deviceId = Encoding.UTF8.GetString(data_buf, 0, data_buf.Length); if (this.OnDeviceIDRead != null) this.OnDeviceIDRead(deviceId); } break; case ELEMENT_TYPE_FIRMWARE_VERSION: { if (this.OnFirmwareVersionRequest != null) { byte[] data_buf = get_element_data(pack, handle); string firmwareVersion = Encoding.UTF8.GetString(data_buf, 0, data_buf.Length); this.OnFirmwareVersionRequest(firmwareVersion); } } break; case ELEMENT_TYPE_DAILY_ACTIVITY: { handle_today_activity(pack, handle); } break; } handle = get_next_element(pack, handle); } }
/**************************************************************** * Delegates **/ private void OnElementParsed (ElementDesc p_element) { KreyosUtils.Log("BluetoothManager::OnElementParsed", "Type:" + p_element.ElementType + " Data:" + string.Join(" ", p_element.Data)); }