Identifying physical device type as Rower/Bike/Ski

Post questions and issues with Concept2 PM3 SDK
Post Reply
Jens Jensen
Paddler
Posts: 2
Joined: April 28th, 2022, 7:23 am

Identifying physical device type as Rower/Bike/Ski

Post by Jens Jensen » April 28th, 2022, 7:42 am

The GetVersion() function implemented in the SDK (Connecting to PM via USB) seems to reveal the type of the PM (3 for PM3, 4 for PM4 and 5 for PM5).
But is it also possible to obtain the Type of the physical device (Rower/Bike/Ski) to which the Performance Monitor is connected/configured?
It would be valuable information in order to use the unit (RPM for a bike) og (SPM for a Rower) and probably also for tweeking other parts of UI.

User avatar
Citroen
SpamTeam
Posts: 8011
Joined: March 16th, 2006, 3:28 pm
Location: A small cave in deepest darkest Basingstoke, UK

Re: Identifying physical device type as Rower/Bike/Ski

Post by Citroen » April 28th, 2022, 10:34 am

Can you get the product ID, hardware ID or firmware version?

Paste the frame you get from "GetVersion()" here.

Jens Jensen
Paddler
Posts: 2
Joined: April 28th, 2022, 7:23 am

Re: Identifying physical device type as Rower/Bike/Ski

Post by Jens Jensen » April 28th, 2022, 11:46 am

On a PM4 on a rower I get:
13:32:20.120 PM3.GetVersion: Rsp: Length=9: 0x91 0x7 0x16 0x2 0x4 0xF2 0x0 0xDA 0x2
This I interpret as
ID=22="Concept2"
CID=2
Model=4="PM4"
HwVWesion=242
SwVersion=730

On a PM5 on a bike I get:
13:17:20.891 PM3.GetVersion: Rsp: Length=9: 0x91 0x7 0x16 0x2 0x5 0x6D 0x2 0x40 0x1
This I interpret as
ID=22="Concept2"
CID=2
Model=5="PM5"
HwVersion=621
SwVersion=320

User avatar
Citroen
SpamTeam
Posts: 8011
Joined: March 16th, 2006, 3:28 pm
Location: A small cave in deepest darkest Basingstoke, UK

Re: Identifying physical device type as Rower/Bike/Ski

Post by Citroen » April 28th, 2022, 2:39 pm

I know it's crude (and not the ideal programming technique), but a look-up table where you select based on PM type (3, 4 or 5), swversion and hwversion may be your best option.

I guess you could fire an email at info@concept2.com and ask them how they're doing it and whether they have a published list of plausible values.

tussocky
Paddler
Posts: 6
Joined: December 4th, 2021, 5:14 am

Re: Identifying physical device type as Rower/Bike/Ski

Post by tussocky » August 27th, 2022, 3:25 pm

There is a way. Look in the C2 CSAFE Bluetooth definition and you'll find that it is sent across as an enumerated value under "Erg Machine Type":

typedef enum {
ERGMACHINE_TYPE_STATIC_D, ERGMACHINE_TYPE_STATIC_C, ERGMACHINE_TYPE_STATIC_A, ERGMACHINE_TYPE_STATIC_B, ERGMACHINE_TYPE_STATIC_E = 5, ERGMACHINE_TYPE_STATIC_SIMULATOR = 7, ERGMACHINE_TYPE_STATIC_DYNAMIC = 8, ERGMACHINE_TYPE_SLIDES_A = 16, ERGMACHINE_TYPE_SLIDES_B, ERGMACHINE_TYPE_SLIDES_C, ERGMACHINE_TYPE_SLIDES_D, ERGMACHINE_TYPE_SLIDES_E, ERGMACHINE_TYPE_LINKED_DYNAMIC = 32, ERGMACHINE_TYPE_STATIC_DYNO = 64, ERGMACHINE_TYPE_STATIC_SKI = 128, ERGMACHINE_TYPE_STATIC_SKI_SIMULATOR = 143, ERGMACHINE_TYPE_BIKE = 192, ERGMACHINE_TYPE_BIKE_ARMS, ERGMACHINE_TYPE_BIKE_NOARMS, ERGMACHINE_TYPE_BIKE_SIMULATOR = 207, ERGMACHINE_TYPE_MULTIERG_ROW = 224, ERGMACHINE_TYPE_MULTIERG_SKI, ERGMACHINE_TYPE_MULTIERG_BIKE, ERGMACHINE_TYPE_NUM,
} OBJ_ERGMACHINETYPE_T;

JaapvanE
10k Poster
Posts: 1307
Joined: January 4th, 2022, 2:49 am

Re: Identifying physical device type as Rower/Bike/Ski

Post by JaapvanE » August 28th, 2022, 2:40 am

An additional one I noticed.

I'm developing OpenRowingMonitor, and we mimic a PM5 as most apps support it. As I also have a PM5 active, I noticed that the PM5 name bluetooth identification (the one broadcasted before subscription) ends with 'Row'. So ORM identifies itself with 'PM5 123456789 Row' as name. It might be they use the same trick over USB.

In ergdata 2, that is the difference between a general C2 logo and a RowErg symbol (for bluetooth).

Post Reply