Pm3 Public/private Commands
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>
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>
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>
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>
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
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
-
- Posts: 0
- Joined: March 18th, 2006, 10:32 pm
- Chris Brett
- 500m Poster
- Posts: 61
- Joined: May 25th, 2006, 10:07 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:
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
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)
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
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.