Pm3 Public/private Commands

Post questions and issues with Concept2 PM3 SDK
Post Reply
[old] ChrisRey

Post by [old] ChrisRey » October 25th, 2004, 3:56 am

Hi,<br>I'm just checking my understanding of the documentation. In the RPPM3CSAFE.ini file there are a lot more commands than are in the documentation and the command name, description and parameters can be retrieved with calls to tkcmdsetCSAFE_get_cmd_name, tkcmdsetCSAFE_get_cmd_text and tkcmdsetCSAFE_get_cmd_data_types. <br><br>A typical example is CSAFE_PM_GET_STROKE_500MPACE which when called from my VB app correctly mirrors what is displayed on the PM3 display. This was in fact my aim with my ActiveX wrapper to emulate the PM3 display to ensure that I was understanding all of the call types.<br><br>However, from an old post I believe that any PM specific calls other than the 5 documented are not to be used. <br><br>Is there a rationale for this as at first look there seems to be data available from the 'forbidden' calls that isn't available in the public space.<br><br>Thanks for any info.<br><br>Regards<br>Chris<br>

[old] c2scott

Post by [old] c2scott » October 25th, 2004, 9:28 am

Chris:<br><br>There are many propriatary (non-public) commands, but they should not be needed for general applications. It was our intent that everything that we could imagine a programmer wanting to use for a application would be and is available in the public space. This includes anything that you can get on the PM3 display itself. <br><br>In the non-public space, there are a lot of commands that are mirrored, or are used for R&D and internal programs. These are not guranteed to be stable, and are not tested for robustness (ie not protected from programmers doing something silly that might, say, crash a PM3), etc, and we do not expect that programmers need them.<br><br>If there is something specific that you cannot get to work, please post here. <br><br>-- Scott<br>

[old] ChrisRey

Post by [old] ChrisRey » October 25th, 2004, 10:10 am

Scott,<br><br><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td class='genmed'><span class='genmed'><b>QUOTE</b></span> </td></tr><tr><td class='quote'><!--QuoteEBegin-->There are many propriatary (non-public) commands, but they should not be needed for general applications. It was our intent that everything that we could imagine a programmer wanting to use for a application would be and is available in the public space. This includes anything that you can get on the PM3 display itself. <!--QuoteEnd--> </td></tr></table> <br><br>thanks for your reply and specifically for the reassurance that everything on the PM3 should be 'gettable' . <br><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td class='genmed'><span class='genmed'><b>QUOTE</b></span> </td></tr><tr><td class='quote'><!--QuoteEBegin-->In the non-public space, there are a lot of commands that are mirrored, or are used for R&D and internal programs. These are not guranteed to be stable, and are not tested for robustness (ie not protected from programmers doing something silly that might, say, crash a PM3), etc, and we do not expect that programmers need them.<!--QuoteEnd--> </td></tr></table> <br><br>The PM specific commands do look nicer as their command names more easily map to their use and don't need conversion, for instance I guess that CSAFE_PM_GET_STROKE_500MPACE is equal to half of the result of CSAFE_GETPACE_CMD, but I take your point about the stability and robustness of the private commands. <br><br>It was mostly laziness on my part to experiment with the private PM commands as I was able to code generate a lot of the wrapper code from the contents of the .INI file whereas I had to hand code the methods for the non-PM commands. <br><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td class='genmed'><span class='genmed'><b>QUOTE</b></span> </td></tr><tr><td class='quote'><!--QuoteEBegin-->If there is something specific that you cannot get to work, please post here<!--QuoteEnd--> </td></tr></table> <br>Can I ask a specific question: How does one get the data used to get the stroke power graph that's on the PM3 display?<br><br>Thanks again<br><br>Chris<br><br>

[old] c2scott

Post by [old] c2scott » October 27th, 2004, 9:55 am

Chris:<br><br>The public commands were formatted to be as compliant with the intent of CSAFE as possible, using their units etc. CSAFE does not have a /500m unit type for example. So, a very small one line formula in your code will just have to do! <br><br>I will have to discuss with my team the advisibility and practicality of publishing the power graph.<br><br>-- Scott<br>

[old] ChrisRey

Post by [old] ChrisRey » October 27th, 2004, 10:34 am

Scott,<br>thanks for the reply.<br><br><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td class='genmed'><span class='genmed'><b>QUOTE</b></span> </td></tr><tr><td class='quote'><!--QuoteEBegin-->So, a very small one line formula in your code will just have to do! <!--QuoteEnd--> </td></tr></table> <br><br>Like I said - I'm very very lazy, some might say I'm only playing with the API to avoid doing any rowing . Joking aside I agree wholeheartedly with matching to an existing set of standards, would that all APIs I have to work with in my day job have such consideration (sighs)<br><br>The idea with the power graph was to be able to overlay this stroke over the last few strokes with the older strokes fading out so I could get a view on consistency of stroking. This would need quite a high rate of calls to the PM3 and would need relative time information with each read to get an accurate profile. I'd be interested if it was available but don't bust a gut just on my account.<br><br>As an aside, after I installed the firmware upgrade that came with the SDK I got lots of small single digit numbers displaying on the PM3 display, I'm guessing that they're diagnostics of some sort?<br><br>thanks again<br>Chris

[old] c2scott

Post by [old] c2scott » October 27th, 2004, 8:33 pm

Yes. Some debug bit got permanently turned on for some reason. The next release will have this gone. Sorry about that...<br><br>-- Scott<br>

[old] ChrisRey

Post by [old] ChrisRey » October 28th, 2004, 3:48 am

No problem<br>Cheers<br>Chris<br>

[old] blair1

Post by [old] blair1 » November 7th, 2004, 5:33 am

Chris, Scott,<br><br>Did you have any luck with the force curve display? This is something that I would very much like to be able to use in an application. Any assistance with being able to produce this would be great.

[old] ChrisRey

Post by [old] ChrisRey » November 9th, 2004, 6:19 am

Hi,<br>My development work is on hold at the moment as I'm snowed under with real work and home obligations. From what Scott says it will need more commands to allow the force curve data to be retrieved so it can' t be done now, much as I would like it in my app.<br>Good luck with your software<br>Cheers<br>Chris

[old] twenzel
Posts: 0
Joined: March 18th, 2006, 10:32 pm

Post by [old] twenzel » December 5th, 2004, 2:27 pm

Hi,<br><br>are there any commands to read out data from the LogCard?<br><br>~Toni

User avatar
Chris Brett
500m Poster
Posts: 61
Joined: May 25th, 2006, 10:07 am

Post by Chris Brett » August 3rd, 2006, 11:02 am

There is a command listed in the PM3 Communications Interface Definition Document on Page 31.

To download this if you haven't already it is part of the SDK download from the following URL.

http://www.concept2.com/05/rower/service/pm3_sdk.asp

This is tkcmdsetCSAFE_read_logblk8

The function prototype is as follows:

Code: Select all

ERRCODE_T tkcmdsetCSAFE_read_logblk8(UINT16_T unit_address, UINT32_T logcard_address, UINT32_T byte_len, UINT8_T *val_ptr8,  UINT32_T *num_read)
To be able to use this function further information regarding the correct specification and use of the logcard_address parameter would be required.
In a previous discussion however the structure of the LogCard had not been published for various reasons outlined in the thread below.

http://www.c2forum.com/viewtopic.php?t=49

I would however be interested if anyone has used the function successfully or if C2 have since made the logcard_address structure publicly available.

Cheers Chris

User avatar
c2scott
2k Poster
Posts: 218
Joined: March 19th, 2006, 6:31 pm

Post by c2scott » August 3rd, 2006, 4:23 pm

I understand that various people wish to have this specification published, however there has been no change in the policy regarding the publication of the LogCard format. If you have a serious complaint with this policy, please write your comments in an email to me and I will share with the decision making team. Alternatively, run the raw data through the LogCard utility to convert it to spreadsheet format.

Post Reply