This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Nordik UART app with Multiple service reception

I need to receive both UART Service data and HRS service data on the app.

Currently I have seen on Nordik Connect app , both the services can be found and can connect and receive data.

I need to do same with my app using nordik UART App code.

I have changed UART profile to HRS profile and code was working, i was receiving Nordik HRS service data.

But i want both services should be used and receives data. so i have prepare separate UARTService_HRS for hrs profile in the same code.also added needed changed.but it gives error null pointer exception on BLEGattService.

Please help

Parents
  • in above code i tried to read characteristics from both services . also tried to read characteristics in list fashion(code is commented for the same). we have broadcast update function. but when i debug the code HRS characteristics never executed. this below line return always false ,so i am unable to read. if (RX_TSCHAR_UUID.equals(characteristic.getUuid())) so i got something garbage data on this characteristics read not byte array.in represent my TS keyword for hrs profile in my code.

    private void broadcastUpdate(final String action,
                                     final BluetoothGattCharacteristic characteristic) {
            final Intent intent = new Intent(action);
            //final Intent intent1 = new Intent(action);
    
            // This is special handling for the Heart Rate Measurement profile.  Data parsing is
            // carried out as per profile specifications:
            // developer.bluetooth.org/.../CharacteristicViewer.aspx
            if (TX_CHAR_UUID.equals(characteristic.getUuid())) {
    
                // Log.d(TAG, String.format("Received TX: %d",characteristic.getValue() ));
                intent.putExtra(EXTRA_DATA, characteristic.getValue());
                BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CCCD);
    
                byte[] received= characteristic.getValue();
                String data = (characteristic.getValue() == null || characteristic.getValue().length <= 0) ? "0 bytes" : GeneralCharacteristicParser.parse(characteristic);
    
                intent.putExtra(SOME_MORE,data);
    
            }
    
            if (RX_TSCHAR_UUID.equals(characteristic.getUuid())) {
    
                // Log.d(TAG, String.format("Received TX: %d",characteristic.getValue() ));
                intent.putExtra(EXTRA_DATA, characteristic.getValue());
                BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CCCDTS);
    
                byte[] received= characteristic.getValue();
                String data = (characteristic.getValue() == null || characteristic.getValue().length <= 0) ? "0 bytes" : GeneralCharacteristicParser.parse(characteristic);
    
                intent.putExtra(SOME_MORE,data);
    
    
            }
            else
            {
    
            }
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
            //LocalBroadcastManager.getInstance(this).sendBroadcast(intent1);
        }
    
Reply
  • in above code i tried to read characteristics from both services . also tried to read characteristics in list fashion(code is commented for the same). we have broadcast update function. but when i debug the code HRS characteristics never executed. this below line return always false ,so i am unable to read. if (RX_TSCHAR_UUID.equals(characteristic.getUuid())) so i got something garbage data on this characteristics read not byte array.in represent my TS keyword for hrs profile in my code.

    private void broadcastUpdate(final String action,
                                     final BluetoothGattCharacteristic characteristic) {
            final Intent intent = new Intent(action);
            //final Intent intent1 = new Intent(action);
    
            // This is special handling for the Heart Rate Measurement profile.  Data parsing is
            // carried out as per profile specifications:
            // developer.bluetooth.org/.../CharacteristicViewer.aspx
            if (TX_CHAR_UUID.equals(characteristic.getUuid())) {
    
                // Log.d(TAG, String.format("Received TX: %d",characteristic.getValue() ));
                intent.putExtra(EXTRA_DATA, characteristic.getValue());
                BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CCCD);
    
                byte[] received= characteristic.getValue();
                String data = (characteristic.getValue() == null || characteristic.getValue().length <= 0) ? "0 bytes" : GeneralCharacteristicParser.parse(characteristic);
    
                intent.putExtra(SOME_MORE,data);
    
            }
    
            if (RX_TSCHAR_UUID.equals(characteristic.getUuid())) {
    
                // Log.d(TAG, String.format("Received TX: %d",characteristic.getValue() ));
                intent.putExtra(EXTRA_DATA, characteristic.getValue());
                BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CCCDTS);
    
                byte[] received= characteristic.getValue();
                String data = (characteristic.getValue() == null || characteristic.getValue().length <= 0) ? "0 bytes" : GeneralCharacteristicParser.parse(characteristic);
    
                intent.putExtra(SOME_MORE,data);
    
    
            }
            else
            {
    
            }
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
            //LocalBroadcastManager.getInstance(this).sendBroadcast(intent1);
        }
    
Children
No Data
Related