Merge pull request #174 from JF002/fixMusicServiceUUID
Fix music service UUID
This commit is contained in:
		
						commit
						0e679a02af
					
				
							
								
								
									
										23
									
								
								doc/ble.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								doc/ble.md
									
									
									
									
									
								
							@ -15,6 +15,29 @@ If **CTS** is detected, it'll request the current time to the companion applicat
 | 
				
			|||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## BLE UUIDs
 | 
				
			||||||
 | 
					When possible, InfiniTime tries to implement BLE services defined by the BLE specification. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When the service does not exist in the BLE specification, InfiniTime implement custom services. As all BLE services, custom services are identified by a UUID. Here is how to define the UUID of custom services in InfiniTime:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					 - Base UUID :           xxxxxxxx-78fc-48fe-8e23-433b3a1942d0
 | 
				
			||||||
 | 
					 - Service UUID :        SSSS0000-78fc-48fe-8e23-433b3a1942d0 where SSSS is the service ID
 | 
				
			||||||
 | 
					 - Characteristic UUID : SSSSCCCC-78fc-48fe-8e23-433b3a1942d0 where CCCC is the characteristic ID for the service SSSS and is different than 0
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following custom services are implemented in InfiniTime:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Since InfiniTime 0.8:
 | 
				
			||||||
 | 
					   ```
 | 
				
			||||||
 | 
					    * Music Service :             00000000-78fc-48fe-8e23-433b3a1942d0
 | 
				
			||||||
 | 
					   ```
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					 - Since InfiniTime 0.11:
 | 
				
			||||||
 | 
					   ```
 | 
				
			||||||
 | 
					     * Navigation Service :        00010000-78fc-48fe-8e23-433b3a1942d0
 | 
				
			||||||
 | 
					   ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## BLE services
 | 
					## BLE services
 | 
				
			||||||
[List of standard BLE services](https://www.bluetooth.com/specifications/gatt/services/)
 | 
					[List of standard BLE services](https://www.bluetooth.com/specifications/gatt/services/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -24,32 +24,68 @@ int MSCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_acces
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask &system) : m_system(system) {
 | 
					Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask &system) : m_system(system) {
 | 
				
			||||||
  msUuid.value[11] = msId[0];
 | 
					  msUuid.value[14] = msId[0];
 | 
				
			||||||
  msUuid.value[12] = msId[1];
 | 
					  msUuid.value[15] = msId[1];
 | 
				
			||||||
  msEventCharUuid.value[11] = msEventCharId[0];
 | 
					
 | 
				
			||||||
  msEventCharUuid.value[12] = msEventCharId[1];
 | 
					  msEventCharUuid.value[12] = msEventCharId[0];
 | 
				
			||||||
  msStatusCharUuid.value[11] = msStatusCharId[0];
 | 
					  msEventCharUuid.value[13] = msEventCharId[1];
 | 
				
			||||||
  msStatusCharUuid.value[12] = msStatusCharId[1];
 | 
					  msEventCharUuid.value[14] = msId[0];
 | 
				
			||||||
  msTrackCharUuid.value[11] = msTrackCharId[0];
 | 
					  msEventCharUuid.value[15] = msId[1];
 | 
				
			||||||
  msTrackCharUuid.value[12] = msTrackCharId[1];
 | 
					
 | 
				
			||||||
  msArtistCharUuid.value[11] = msArtistCharId[0];
 | 
					  msStatusCharUuid.value[12] = msStatusCharId[0];
 | 
				
			||||||
  msArtistCharUuid.value[12] = msArtistCharId[1];
 | 
					  msStatusCharUuid.value[13] = msStatusCharId[1];
 | 
				
			||||||
  msAlbumCharUuid.value[11] = msAlbumCharId[0];
 | 
					  msStatusCharUuid.value[14] = msId[0];
 | 
				
			||||||
  msAlbumCharUuid.value[12] = msAlbumCharId[1];
 | 
					  msStatusCharUuid.value[15] = msId[1];
 | 
				
			||||||
  msPositionCharUuid.value[11] = msPositionCharId[0];
 | 
					
 | 
				
			||||||
  msPositionCharUuid.value[12] = msPositionCharId[1];
 | 
					  msTrackCharUuid.value[12] = msTrackCharId[0];
 | 
				
			||||||
  msTotalLengthCharUuid.value[11] = msTotalLengthCharId[0];
 | 
					  msTrackCharUuid.value[13] = msTrackCharId[1];
 | 
				
			||||||
  msTotalLengthCharUuid.value[12] = msTotalLengthCharId[1];
 | 
					  msTrackCharUuid.value[14] = msId[0];
 | 
				
			||||||
  msTrackNumberCharUuid.value[11] = msTrackNumberCharId[0];
 | 
					  msTrackCharUuid.value[15] = msId[1];
 | 
				
			||||||
  msTrackNumberCharUuid.value[12] = msTrackNumberCharId[1];
 | 
					
 | 
				
			||||||
  msTrackTotalCharUuid.value[11] = msTrackTotalCharId[0];
 | 
					  msArtistCharUuid.value[12] = msArtistCharId[0];
 | 
				
			||||||
  msTrackTotalCharUuid.value[12] = msTrackTotalCharId[1];
 | 
					  msArtistCharUuid.value[13] = msArtistCharId[1];
 | 
				
			||||||
  msPlaybackSpeedCharUuid.value[11] = msPlaybackSpeedCharId[0];
 | 
					  msArtistCharUuid.value[14] = msId[0];
 | 
				
			||||||
  msPlaybackSpeedCharUuid.value[12] = msPlaybackSpeedCharId[1];
 | 
					  msArtistCharUuid.value[15] = msId[1];
 | 
				
			||||||
  msRepeatCharUuid.value[11] = msRepeatCharId[0];
 | 
					
 | 
				
			||||||
  msRepeatCharUuid.value[12] = msRepeatCharId[1];
 | 
					  msAlbumCharUuid.value[12] = msAlbumCharId[0];
 | 
				
			||||||
  msShuffleCharUuid.value[11] = msShuffleCharId[0];
 | 
					  msAlbumCharUuid.value[13] = msAlbumCharId[1];
 | 
				
			||||||
  msShuffleCharUuid.value[12] = msShuffleCharId[1];
 | 
					  msAlbumCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msAlbumCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msPositionCharUuid.value[12] = msPositionCharId[0];
 | 
				
			||||||
 | 
					  msPositionCharUuid.value[13] = msPositionCharId[1];
 | 
				
			||||||
 | 
					  msPositionCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msPositionCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msTotalLengthCharUuid.value[12] = msTotalLengthCharId[0];
 | 
				
			||||||
 | 
					  msTotalLengthCharUuid.value[13] = msTotalLengthCharId[1];
 | 
				
			||||||
 | 
					  msTotalLengthCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msTotalLengthCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msTrackNumberCharUuid.value[12] = msTrackNumberCharId[0];
 | 
				
			||||||
 | 
					  msTrackNumberCharUuid.value[13] = msTrackNumberCharId[1];
 | 
				
			||||||
 | 
					  msTrackNumberCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msTrackNumberCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msTrackTotalCharUuid.value[12] = msTrackTotalCharId[0];
 | 
				
			||||||
 | 
					  msTrackTotalCharUuid.value[13] = msTrackTotalCharId[1];
 | 
				
			||||||
 | 
					  msTrackTotalCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msTrackTotalCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msPlaybackSpeedCharUuid.value[12] = msPlaybackSpeedCharId[0];
 | 
				
			||||||
 | 
					  msPlaybackSpeedCharUuid.value[13] = msPlaybackSpeedCharId[1];
 | 
				
			||||||
 | 
					  msPlaybackSpeedCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msPlaybackSpeedCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msRepeatCharUuid.value[12] = msRepeatCharId[0];
 | 
				
			||||||
 | 
					  msRepeatCharUuid.value[13] = msRepeatCharId[1];
 | 
				
			||||||
 | 
					  msRepeatCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msRepeatCharUuid.value[15] = msId[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msShuffleCharUuid.value[12] = msShuffleCharId[0];
 | 
				
			||||||
 | 
					  msShuffleCharUuid.value[13] = msShuffleCharId[1];
 | 
				
			||||||
 | 
					  msShuffleCharUuid.value[14] = msId[0];
 | 
				
			||||||
 | 
					  msShuffleCharUuid.value[15] = msId[1];
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  characteristicDefinition[0] = {.uuid = (ble_uuid_t *) (&msEventCharUuid),
 | 
					  characteristicDefinition[0] = {.uuid = (ble_uuid_t *) (&msEventCharUuid),
 | 
				
			||||||
      .access_cb = MSCallback,
 | 
					      .access_cb = MSCallback,
 | 
				
			||||||
 | 
				
			|||||||
@ -26,8 +26,8 @@
 | 
				
			|||||||
#undef max
 | 
					#undef max
 | 
				
			||||||
#undef min
 | 
					#undef min
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//c7e50000-78fc-48fe-8e23-433b3a1942d0
 | 
					//00000000-78fc-48fe-8e23-433b3a1942d0
 | 
				
			||||||
#define MUSIC_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0xe5, 0xc7}
 | 
					#define MUSIC_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Pinetime {
 | 
					namespace Pinetime {
 | 
				
			||||||
  namespace System {
 | 
					  namespace System {
 | 
				
			||||||
@ -73,19 +73,19 @@ namespace Pinetime {
 | 
				
			|||||||
        Playing = 0x01
 | 
					        Playing = 0x01
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    private:
 | 
					    private:
 | 
				
			||||||
      static constexpr uint8_t msId[2] = {0x00, 0x01};
 | 
					      static constexpr uint8_t msId[2] = {0x00, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msEventCharId[2] = {0x00, 0x02};
 | 
					      static constexpr uint8_t msEventCharId[2] = {0x01, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msStatusCharId[2] = {0x00, 0x03};
 | 
					      static constexpr uint8_t msStatusCharId[2] = {0x02, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msArtistCharId[2] = {0x00, 0x04};
 | 
					      static constexpr uint8_t msArtistCharId[2] = {0x03, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msTrackCharId[2] = {0x00, 0x05};
 | 
					      static constexpr uint8_t msTrackCharId[2] = {0x04, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msAlbumCharId[2] = {0x00, 0x06};
 | 
					      static constexpr uint8_t msAlbumCharId[2] = {0x05, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msPositionCharId[2] = {0x00, 0x07};
 | 
					      static constexpr uint8_t msPositionCharId[2] = {0x06, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msTotalLengthCharId[2] = {0x00, 0x08};
 | 
					      static constexpr uint8_t msTotalLengthCharId[2] = {0x07, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msTrackNumberCharId[2] = {0x00, 0x09};
 | 
					      static constexpr uint8_t msTrackNumberCharId[2] = {0x08, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msTrackTotalCharId[2] = {0x00, 0x0a};
 | 
					      static constexpr uint8_t msTrackTotalCharId[2] = {0x09, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msPlaybackSpeedCharId[2] = {0x00, 0x0b};
 | 
					      static constexpr uint8_t msPlaybackSpeedCharId[2] = {0x0a, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msRepeatCharId[2] = {0x00, 0x0c};
 | 
					      static constexpr uint8_t msRepeatCharId[2] = {0x0b, 0x00};
 | 
				
			||||||
      static constexpr uint8_t msShuffleCharId[2] = {0x00, 0x0d};
 | 
					      static constexpr uint8_t msShuffleCharId[2] = {0x0c, 0x00};
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      ble_uuid128_t msUuid{
 | 
					      ble_uuid128_t msUuid{
 | 
				
			||||||
          .u = {.type = BLE_UUID_TYPE_128},
 | 
					          .u = {.type = BLE_UUID_TYPE_128},
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user