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

Device advertised as mouse/keyboard, but after bonded it became heart rate device?

I am using RedBearLab Blend v1.0. I ran the HID_template and HID_keyboard_template. I can see the device in Win10 advertised as joystick and keyboard. Then I tried to modified the hid_mouse_batt_nordic_works.xml and generate a new configuration as mouse/keyboard with nRFgo. During advertising, Win10 sees the device as mouse/keyboard, but after bonded, it turns into a heart rate device. I am still not very clear about the nRF8001 configuration, especially how to generate the Default Value in Report Map. Can someone help to explain it more clearly? Many thanks!

Here is the generated xml (also uploaded as attachment),

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE AttributeServer>
<Profile Version="1.3">
    <SetupId>26681</SetupId>
    <Device>nRF8001_Dx</Device>
    <Service Type="local" PrimaryService="true">
        <Name>Battery</Name>
        <Uuid>180f</Uuid>
        <Characteristic>
            <Name>Battery Level</Name>
            <Uuid>2a19</Uuid>
            <DefaultValue>32</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>1</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>Battery Power State</Name>
            <Uuid>2a1a</Uuid>
            <DefaultValue>2F</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>1</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
    </Service>
    <Service Type="local" PrimaryService="true">
        <Name>HID Service</Name>
        <Uuid>1812</Uuid>
        <Characteristic>
            <Name>HID Information</Name>
            <Uuid>2a4a</Uuid>
            <DefaultValue>11010001</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>4</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>HID Protocol Mode</Name>
            <Uuid>2a4e</Uuid>
            <DefaultValue>01</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>1</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>true</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>HID Control Point</Name>
            <Uuid>2a4c</Uuid>
            <DefaultValue></DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>1</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>true</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>Report Map</Name>
            <Uuid>2a4b</Uuid>
            <DefaultValue>05010902A10185010901A1009505750105091901290515002501810295017503810175089501050109381581257F8106050C0A380295018106C085020901A100750C95020501093009311601F826FF078106C0C0050C0901A1018503150025017501950109CD81060A8301810609B5810609B6810609EA810609E981060A250281060A24028106C0</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>136</MaxDataLength>
            <AttributeLenType>2</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>HID Report ID1</Name>
            <Uuid>2a4d</Uuid>
            <DefaultValue></DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>3</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <ProfileDescriptors>
                <ProfileDescriptor Name="Report Reference" MaxDataLength="2" DefaultValue="0101" AttributeLenType="1">
                    <ForceOpen>false</ForceOpen>
                    <forceEncryption>false</forceEncryption>
                    <Properties>
                        <Write>false</Write>
                        <Read>true</Read>
                    </Properties>
                    <Uuid>2908</Uuid>
                    <SetPipe>false</SetPipe>
                    <AckIsAuto>true</AckIsAuto>
                </ProfileDescriptor>
            </ProfileDescriptors>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>HID Report ID2</Name>
            <Uuid>2a4d</Uuid>
            <DefaultValue></DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>3</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <ProfileDescriptors>
                <ProfileDescriptor Name="Report Reference" MaxDataLength="2" DefaultValue="0201" AttributeLenType="1">
                    <ForceOpen>false</ForceOpen>
                    <forceEncryption>false</forceEncryption>
                    <Properties>
                        <Write>false</Write>
                        <Read>true</Read>
                    </Properties>
                    <Uuid>2908</Uuid>
                    <SetPipe>false</SetPipe>
                    <AckIsAuto>true</AckIsAuto>
                </ProfileDescriptor>
            </ProfileDescriptors>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>Boot Mouse Input Report</Name>
            <Uuid>2a33</Uuid>
            <DefaultValue>000000</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>3</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>Boot Keyboard Input Report</Name>
            <Uuid>2a22</Uuid>
            <DefaultValue>0000000000000000</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>8</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
    </Service>
    <Service Type="local" PrimaryService="true">
        <Name>Scan Parameters Service</Name>
        <Uuid>1813</Uuid>
        <Characteristic>
            <Name>Scan Interval Window</Name>
            <Uuid>2a4f</Uuid>
            <DefaultValue></DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>4</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>true</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>Scan Param Refresh Characteristic</Name>
            <Uuid>2a31</Uuid>
            <DefaultValue></DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>1</MaxDataLength>
            <AttributeLenType>2</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
    </Service>
    <Service Type="local" PrimaryService="true">
        <Name>Device Information</Name>
        <Uuid>180a</Uuid>
        <Characteristic>
            <Name>PNP_ID</Name>
            <Uuid>2a50</Uuid>
            <DefaultValue>021519DDDD0100</DefaultValue>
            <UsePresentationFormat>0</UsePresentationFormat>
            <MaxDataLength>7</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>false</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>false</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="1" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
        <Characteristic>
            <Name>Hardware Revision String</Name>
            <Uuid>2a27</Uuid>
            <DefaultValue>Bx</DefaultValue>
            <UsePresentationFormat>1</UsePresentationFormat>
            <MaxDataLength>2</MaxDataLength>
            <AttributeLenType>1</AttributeLenType>
            <ForceOpen>false</ForceOpen>
            <ForceEncryption>false</ForceEncryption>
            <Properties>
                <WriteWithoutResponse>false</WriteWithoutResponse>
                <Write>false</Write>
                <Notify>true</Notify>
                <Indicate>false</Indicate>
                <Broadcast>false</Broadcast>
            </Properties>
            <SetPipe>true</SetPipe>
            <AckIsAuto>false</AckIsAuto>
            <PresentationFormatDescriptor Value="0000" Exponent="0" Format="25" NameSpace="01" Unit="0000"/>
            <PeriodForReadingThisCharacteristic>0</PeriodForReadingThisCharacteristic>
            <PeriodForProperties/>
        </Characteristic>
    </Service>
    <Gapsettings>
        <Name>mouseboard</Name>
        <DeviceNameWriteLength>15</DeviceNameWriteLength>
        <LocalPipeOnDeviceName>false</LocalPipeOnDeviceName>
        <DeviceNameShortLength>0</DeviceNameShortLength>
        <Apperance>0302</Apperance>
        <SecurityLevel>1</SecurityLevel>
        <AuthenticationReq>0</AuthenticationReq>
        <IoCapabilities>0</IoCapabilities>
        <BondTimeout>600</BondTimeout>
        <SecurityRequestDelay>5</SecurityRequestDelay>
        <MinimumKeySize>7</MinimumKeySize>
        <MaximumKeySize>16</MaximumKeySize>
        <AdvertisingDataBondedBitmap>201f</AdvertisingDataBondedBitmap>
        <AdvertisingDataGeneralBitmap>10</AdvertisingDataGeneralBitmap>
        <AdvertisingDataBrodcastBitmap>0</AdvertisingDataBrodcastBitmap>
        <AdvertisingDataBondedScanResponseBitmap>0</AdvertisingDataBondedScanResponseBitmap>
        <AdvertisingDataGeneralScanResponseBitmap>0</AdvertisingDataGeneralScanResponseBitmap>
        <AdvertisingDataBrodcastScanResponseBitmap>0</AdvertisingDataBrodcastScanResponseBitmap>
        <AdvertisingDataBondedBitmapCustom>1</AdvertisingDataBondedBitmapCustom>
        <AdvertisingDataGeneralBitmapCustom>0</AdvertisingDataGeneralBitmapCustom>
        <AdvertisingDataBrodcastBitmapCustom>0</AdvertisingDataBrodcastBitmapCustom>
        <AdvertisingDataBondedScanResponseBitmapCustom>0</AdvertisingDataBondedScanResponseBitmapCustom>
        <AdvertisingDataGeneralScanResponseBitmapCustom>0</AdvertisingDataGeneralScanResponseBitmapCustom>
        <AdvertisingDataBrodcastScanResponseBitmapCustom>0</AdvertisingDataBrodcastScanResponseBitmapCustom>
        <TxPowerLevelOffset>0</TxPowerLevelOffset>
        <MinimumConnectionInterval>6</MinimumConnectionInterval>
        <MaximumConnectionInterval>24</MaximumConnectionInterval>
        <SlaveLatency>6</SlaveLatency>
        <TimeoutMultipler>100</TimeoutMultipler>
        <AddServiceUpdateCharacteristic>false</AddServiceUpdateCharacteristic>
        <AddServiceUpdateCharacteristicPipe>false</AddServiceUpdateCharacteristicPipe>
        <TimingChangeDelay>5</TimingChangeDelay>
        <ServiceToAdvertise>
            <Uuid>1812</Uuid>
        </ServiceToAdvertise>
        <CustomAdTypes>
            <AdType index="1">
                <Type>19</Type>
                <Value>c003</Value>
            </AdType>
            <AdType index="2">
                <Type>0</Type>
                <Value></Value>
            </AdType>
        </CustomAdTypes>
    </Gapsettings>
    <Hardwaresettings>
        <Clocksource>1</Clocksource>
        <ClockAccuracy>1</ClockAccuracy>
        <InitialTxPower>3</InitialTxPower>
        <HfClkSource>0</HfClkSource>
        <DcDcConverter>0</DcDcConverter>
        <ActiveSignalModeIndex>0</ActiveSignalModeIndex>
        <ActiveSignalToTickDistance>0</ActiveSignalToTickDistance>
        <DynamicWindowLimitingEnabled>true</DynamicWindowLimitingEnabled>
    </Hardwaresettings>
    <CurrentInput>
        <BatteryCharge>220</BatteryCharge>
        <Master32KhzClockAccuracy>10</Master32KhzClockAccuracy>
        <ConnectionInterval>1000</ConnectionInterval>
        <PercentOfTimeSleeping>0</PercentOfTimeSleeping>
        <PercentOfTimeAdvertising>0</PercentOfTimeAdvertising>
        <AdvertisingInterval>1280</AdvertisingInterval>
    </CurrentInput>
</Profile>

`hid_mouseboard.xml

Parents
  • Thanks for the great help! Where can I find a full list of HID appearance code? I am building a (force sensitive) touchpad device which can also work as a keyboard, what is the right code for it? And I am also confused about the HID report. How do I report touch events and keyboard events? What should I add in the configuration? Thank you!

Reply
  • Thanks for the great help! Where can I find a full list of HID appearance code? I am building a (force sensitive) touchpad device which can also work as a keyboard, what is the right code for it? And I am also confused about the HID report. How do I report touch events and keyboard events? What should I add in the configuration? Thank you!

Children
No Data
Related