mirror of
https://github.com/yoboujon/dumber.git
synced 2025-06-08 13:50:49 +02:00
les commandes marchent, mais les moteurs non: probleme de puce selectionnée dasn l'IDE
This commit is contained in:
parent
067fbef0fb
commit
aa2c734535
11 changed files with 255 additions and 231 deletions
|
@ -327,6 +327,18 @@
|
||||||
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1151842665.1610208999" name="Resource Custom Build Step Output Type"/>
|
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1151842665.1610208999" name="Resource Custom Build Step Output Type"/>
|
||||||
</tool>
|
</tool>
|
||||||
</fileInfo>
|
</fileInfo>
|
||||||
|
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.1512822849" name="moteurs.c" rcbsApplicability="disable" resourcePath="Application/moteurs.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.772184159">
|
||||||
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.772184159" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
||||||
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1561927129" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
||||||
|
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.786982597" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
||||||
|
</tool>
|
||||||
|
<tool customBuildStep="true" id="org.eclipse.cdt.managedbuilder.ui.rcbs.1151549896" name="Resource Custom Build Step">
|
||||||
|
<inputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.inputtype.1295176218" name="Resource Custom Build Step Input Type">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths=""/>
|
||||||
|
</inputType>
|
||||||
|
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1189979175" name="Resource Custom Build Step Output Type"/>
|
||||||
|
</tool>
|
||||||
|
</fileInfo>
|
||||||
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.Application/application.c" name="application.c" rcbsApplicability="disable" resourcePath="Application/application.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.983087978">
|
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.Application/application.c" name="application.c" rcbsApplicability="disable" resourcePath="Application/application.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.983087978">
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.983087978" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.983087978" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.606614377" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.606614377" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
||||||
|
@ -339,21 +351,9 @@
|
||||||
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1700687045.61103792" name="Resource Custom Build Step Output Type"/>
|
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1700687045.61103792" name="Resource Custom Build Step Output Type"/>
|
||||||
</tool>
|
</tool>
|
||||||
</fileInfo>
|
</fileInfo>
|
||||||
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.662138057" name="leds.c" rcbsApplicability="disable" resourcePath="Application/leds.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.1311312183">
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.1311312183" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1291578589" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.941552495" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
|
||||||
</tool>
|
|
||||||
</fileInfo>
|
|
||||||
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.2090116280" name="xbee.c" rcbsApplicability="disable" resourcePath="Application/xbee.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.704358328">
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.704358328" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1774324656" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.429048284" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
|
||||||
</tool>
|
|
||||||
</fileInfo>
|
|
||||||
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.53808517" name="batterie.c" rcbsApplicability="disable" resourcePath="Application/batterie.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.1171631638">
|
<fileInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080.727722516.53808517" name="batterie.c" rcbsApplicability="disable" resourcePath="Application/batterie.c" toolsToInvoke="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.1171631638">
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.1171631638" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985.1171631638" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1017015985">
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.2016549754" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.2016549754" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.457387693" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.457387693" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
||||||
</tool>
|
</tool>
|
||||||
</fileInfo>
|
</fileInfo>
|
||||||
|
|
|
@ -125,8 +125,10 @@ void APPLICATION_MainThread(void* params) {
|
||||||
if (receivedCMD != NULL) {
|
if (receivedCMD != NULL) {
|
||||||
decodedCmd = cmdDecode(receivedCMD,strlen(receivedCMD));
|
decodedCmd = cmdDecode(receivedCMD,strlen(receivedCMD));
|
||||||
|
|
||||||
if (decodedCmd==CMD_DECODE_UNKNOWN)
|
if (decodedCmd->type==CMD_NONE)
|
||||||
cmdSendAnswer(ANS_UNKNOWN);
|
cmdSendAnswer(ANS_UNKNOWN);
|
||||||
|
else if (decodedCmd->type == CMD_INVALID_CHECKSUM)
|
||||||
|
cmdSendAnswer(ANS_ERR);
|
||||||
else {
|
else {
|
||||||
systemInfos.cmd = decodedCmd->type;
|
systemInfos.cmd = decodedCmd->type;
|
||||||
systemTimeout.inactivityCnt = 0;
|
systemTimeout.inactivityCnt = 0;
|
||||||
|
@ -164,8 +166,9 @@ void APPLICATION_MainThread(void* params) {
|
||||||
*/
|
*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free(decodedCmd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(decodedCmd);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
/* Definition des commandes */
|
/* Definition des commandes */
|
||||||
|
|
||||||
|
@ -75,7 +76,7 @@ char* cmdAddChecksum(const char* str) {
|
||||||
* Si celui-ci est bon, ll retournera 0 et supprimera le checksum de str
|
* Si celui-ci est bon, ll retournera 0 et supprimera le checksum de str
|
||||||
* sinon il retournera 1 sans faire de modification.
|
* sinon il retournera 1 sans faire de modification.
|
||||||
* @param None
|
* @param None
|
||||||
* @retval 0 ou 1
|
* @retval 0 si le checksum est faux, 1 sinon
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
char cmdVerifyChecksum(char* str) {
|
char cmdVerifyChecksum(char* str) {
|
||||||
|
@ -84,131 +85,130 @@ char cmdVerifyChecksum(char* str) {
|
||||||
unsigned char checksum=0;
|
unsigned char checksum=0;
|
||||||
|
|
||||||
length = strlen(str);
|
length = strlen(str);
|
||||||
for (j = 0; j < length - 2; j++) {
|
/* Warning: str should be without ending CR (0x0D) character, so, a ping command should be
|
||||||
|
* received as "pp", 2 chars long
|
||||||
|
*
|
||||||
|
* in the loop after, ending length is length of the caommand string whithout last char, the checksum
|
||||||
|
* so, we have j<length-1
|
||||||
|
*/
|
||||||
|
for (j = 0; j<length-1; j++) {
|
||||||
checksum ^= str[j];
|
checksum ^= str[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checksum == '\r')
|
if (checksum == '\r')
|
||||||
checksum++;
|
checksum++;
|
||||||
|
|
||||||
if (str[j] == checksum) {
|
if (str[j] == checksum) {
|
||||||
str[length - 2] = 13;
|
/*str[length - 2] = 13;
|
||||||
str[length - 1] = 0;
|
str[length - 1] = 0;
|
||||||
|
str[length] = 0;*/
|
||||||
|
|
||||||
|
str[length - 1] = 0; /* we remove checksum char */
|
||||||
str[length] = 0;
|
str[length] = 0;
|
||||||
|
|
||||||
return 0;
|
|
||||||
} else
|
|
||||||
return 1;
|
return 1;
|
||||||
|
} else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//CMD_Generic* cmdDecode(char* cmd, uint8_t length) {
|
|
||||||
// CMD_Generic* decodedCmd;
|
|
||||||
// char cmd_type = cmd[0];
|
|
||||||
//
|
|
||||||
// switch (cmd_type)
|
|
||||||
// {
|
|
||||||
// case CMD_MOVE:
|
|
||||||
// decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Move));
|
|
||||||
// decodedCmd->type = CMD_MOVE;
|
|
||||||
// ((CMD_Move*)decodedCmd)->distance = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case CMD_TURN:
|
|
||||||
// decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Turn));
|
|
||||||
// decodedCmd->type = CMD_TURN;
|
|
||||||
// ((CMD_Turn*)decodedCmd)->turns = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case CMD_PING:
|
|
||||||
// case CMD_RESET:
|
|
||||||
// case CMD_START_WITHOUT_WATCHDOG:
|
|
||||||
// case CMD_START_WITH_WATCHDOG:
|
|
||||||
// case CMD_RESET_WATCHDOG:
|
|
||||||
// case CMD_GET_BATTERY:
|
|
||||||
// case CMD_GET_BUSY_STATE:
|
|
||||||
// case CMD_GET_VERSION:
|
|
||||||
// case CMD_TEST:
|
|
||||||
// case CMD_DEBUG:
|
|
||||||
// case CMD_POWER_OFF:
|
|
||||||
// decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
// decodedCmd->type = cmd_type;
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// default:
|
|
||||||
// decodedCmd = CMD_DECODE_UNKNOWN;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return decodedCmd;
|
|
||||||
//}
|
|
||||||
|
|
||||||
CMD_Generic* cmdDecode(char* cmd, uint8_t length) {
|
CMD_Generic* cmdDecode(char* cmd, uint8_t length) {
|
||||||
CMD_Generic* decodedCmd;
|
CMD_Generic* decodedCmd;
|
||||||
char cmd_type = cmd[0];
|
char cmd_type = cmd[0];
|
||||||
|
char *p;
|
||||||
|
|
||||||
switch (cmd_type)
|
/* First, verify checksum */
|
||||||
{
|
if (cmdVerifyChecksum(cmd)) {
|
||||||
case MoveCMD:
|
switch (cmd_type)
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Move));
|
{
|
||||||
decodedCmd->type = CMD_MOVE;
|
case MoveCMD:
|
||||||
((CMD_Move*)decodedCmd)->distance = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Move));
|
||||||
break;
|
decodedCmd->type = CMD_MOVE;
|
||||||
|
//((CMD_Move*)decodedCmd)->distance = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
|
||||||
|
|
||||||
case TurnCMD:
|
/* verify that command start with "M=" */
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Turn));
|
if ((cmd[0]=='M')&&(cmd[1]=='=')) {
|
||||||
decodedCmd->type = CMD_TURN;
|
cmd = cmd+2; //cmd+2 for removing "M=" at start of the string
|
||||||
((CMD_Turn*)decodedCmd)->turns = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
|
((CMD_Move*)decodedCmd)->distance=strtoul(cmd , &p, 10);
|
||||||
break;
|
if (p==cmd)
|
||||||
|
decodedCmd->type = CMD_NONE; /* missing number value xxxxx in "M=xxxxx" */
|
||||||
|
} else
|
||||||
|
decodedCmd->type = CMD_NONE; /* misformed command (should start with "M=" */
|
||||||
|
break;
|
||||||
|
|
||||||
case PingCMD:
|
case TurnCMD:
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Turn));
|
||||||
decodedCmd->type = CMD_PING;
|
decodedCmd->type = CMD_TURN;
|
||||||
break;
|
//((CMD_Turn*)decodedCmd)->turns = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
|
||||||
case ResetCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_RESET;
|
|
||||||
break;
|
|
||||||
case StartWWatchDogCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_START_WITH_WATCHDOG;
|
|
||||||
break;
|
|
||||||
case StartWithoutWatchCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_START_WITHOUT_WATCHDOG;
|
|
||||||
break;
|
|
||||||
case ResetWatchdogCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_RESET_WATCHDOG;
|
|
||||||
break;
|
|
||||||
case GetBatteryVoltageCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_GET_BATTERY;
|
|
||||||
break;
|
|
||||||
case GetVersionCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_GET_VERSION;
|
|
||||||
break;
|
|
||||||
case BusyStateCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_GET_BUSY_STATE;
|
|
||||||
break;
|
|
||||||
case TestCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_TEST;
|
|
||||||
break;
|
|
||||||
case DebugCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_DEBUG;
|
|
||||||
break;
|
|
||||||
case PowerOffCMD:
|
|
||||||
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
|
||||||
decodedCmd->type = CMD_POWER_OFF;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
//if (!sscanf(cmd,"T=%hd",&((CMD_Turn*)decodedCmd)->turns ))
|
||||||
decodedCmd = CMD_DECODE_UNKNOWN;
|
// decodedCmd->type = CMD_NONE;
|
||||||
|
|
||||||
|
/* verify that command start with "T=" */
|
||||||
|
if ((cmd[0]=='T')&&(cmd[1]=='=')) {
|
||||||
|
cmd = cmd+2; //cmd+2 for removing "T=" at start of the string
|
||||||
|
((CMD_Turn*)decodedCmd)->turns=strtoul(cmd , &p, 10);
|
||||||
|
if (p==cmd)
|
||||||
|
decodedCmd->type = CMD_NONE; /* missing number value xxxxx in "T=xxxxx" */
|
||||||
|
} else
|
||||||
|
decodedCmd->type = CMD_NONE; /* misformed command (should start with "T=" */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PingCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_PING;
|
||||||
|
break;
|
||||||
|
case ResetCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_RESET;
|
||||||
|
break;
|
||||||
|
case StartWWatchDogCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_START_WITH_WATCHDOG;
|
||||||
|
break;
|
||||||
|
case StartWithoutWatchCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_START_WITHOUT_WATCHDOG;
|
||||||
|
break;
|
||||||
|
case ResetWatchdogCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_RESET_WATCHDOG;
|
||||||
|
break;
|
||||||
|
case GetBatteryVoltageCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_GET_BATTERY;
|
||||||
|
break;
|
||||||
|
case GetVersionCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_GET_VERSION;
|
||||||
|
break;
|
||||||
|
case BusyStateCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_GET_BUSY_STATE;
|
||||||
|
break;
|
||||||
|
case TestCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_TEST;
|
||||||
|
break;
|
||||||
|
case DebugCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_DEBUG;
|
||||||
|
break;
|
||||||
|
case PowerOffCMD:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_POWER_OFF;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_NONE;
|
||||||
|
}
|
||||||
|
} else { /* Checksum is wrong*/
|
||||||
|
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Generic));
|
||||||
|
decodedCmd->type = CMD_INVALID_CHECKSUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
return decodedCmd;
|
return decodedCmd;
|
||||||
|
|
|
@ -24,7 +24,8 @@ typedef enum {
|
||||||
CMD_GET_BUSY_STATE,
|
CMD_GET_BUSY_STATE,
|
||||||
CMD_TEST,
|
CMD_TEST,
|
||||||
CMD_DEBUG,
|
CMD_DEBUG,
|
||||||
CMD_POWER_OFF
|
CMD_POWER_OFF,
|
||||||
|
CMD_INVALID_CHECKSUM=0xFF
|
||||||
} CMD_CommandsType;
|
} CMD_CommandsType;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -77,9 +78,6 @@ typedef struct __attribute__((packed)) {
|
||||||
uint8_t state;
|
uint8_t state;
|
||||||
} ANS_Busy_State;
|
} ANS_Busy_State;
|
||||||
|
|
||||||
#define CMD_DECODE_INVALID ((CMD_Generic*)NULL)
|
|
||||||
#define CMD_DECODE_UNKNOWN ((CMD_Generic*)UINT32_MAX)
|
|
||||||
|
|
||||||
CMD_Generic* cmdDecode(char* cmd, uint8_t length);
|
CMD_Generic* cmdDecode(char* cmd, uint8_t length);
|
||||||
void cmdSendAnswer(uint8_t ans);
|
void cmdSendAnswer(uint8_t ans);
|
||||||
void cmdSendString(char* str);
|
void cmdSendString(char* str);
|
||||||
|
|
|
@ -105,15 +105,21 @@ void MOTEURS_Init(void) {
|
||||||
void MOTEURS_Avance(uint32_t distance) {
|
void MOTEURS_Avance(uint32_t distance) {
|
||||||
static uint32_t dist;
|
static uint32_t dist;
|
||||||
|
|
||||||
dist = distance;
|
if (distance) {
|
||||||
MESSAGE_SendMailbox(MOTEURS_Mailbox, MSG_ID_MOTEURS_MOVE, APPLICATION_Mailbox, (void*)dist);
|
dist = distance;
|
||||||
|
MESSAGE_SendMailbox(MOTEURS_Mailbox, MSG_ID_MOTEURS_MOVE, APPLICATION_Mailbox, (void*)&dist);
|
||||||
|
} else
|
||||||
|
MOTEURS_Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MOTEURS_Tourne(uint32_t tours) {
|
void MOTEURS_Tourne(uint32_t tours) {
|
||||||
static uint32_t turns;
|
static uint32_t turns;
|
||||||
|
|
||||||
turns = tours;
|
if (tours) {
|
||||||
MESSAGE_SendMailbox(MOTEURS_Mailbox, MSG_ID_MOTEURS_TURN, APPLICATION_Mailbox, (void*)turns);
|
turns = tours;
|
||||||
|
MESSAGE_SendMailbox(MOTEURS_Mailbox, MSG_ID_MOTEURS_TURN, APPLICATION_Mailbox, (void*)&turns);
|
||||||
|
} else
|
||||||
|
MOTEURS_Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MOTEURS_Stop(void) {
|
void MOTEURS_Stop(void) {
|
||||||
|
|
|
@ -131,28 +131,28 @@ int XBEE_SendData(char* data) {
|
||||||
int status = XBEE_OK;
|
int status = XBEE_OK;
|
||||||
|
|
||||||
// Prevents successive calls to overlap
|
// Prevents successive calls to overlap
|
||||||
//state = xSemaphoreTake(xHandleSemaphoreTX, pdMS_TO_TICKS(XBEE_TX_SEMAPHORE_WAIT)); // wait max 500 ms (to avoid interlocking)
|
state = xSemaphoreTake(xHandleSemaphoreTX, pdMS_TO_TICKS(XBEE_TX_SEMAPHORE_WAIT)); // wait max 500 ms (to avoid interlocking)
|
||||||
|
|
||||||
//if (state != pdFALSE) { /* test semaphore take answer
|
if (state != pdFALSE) { /* test semaphore take answer
|
||||||
// if answer is false, it means timeout appends
|
if answer is false, it means timeout appends
|
||||||
// We should probably reset something in "else" branch */
|
We should probably reset something in "else" branch */
|
||||||
|
|
||||||
while (LL_USART_IsEnabledIT_TXE(hlpuart1.Instance)) {
|
// while (LL_USART_IsEnabledIT_TXE(hlpuart1.Instance)) {
|
||||||
vTaskDelay(pdMS_TO_TICKS(1));
|
// vTaskDelay(pdMS_TO_TICKS(1));
|
||||||
}
|
// }
|
||||||
|
|
||||||
strncpy((char*)txBuffer,data,XBEE_TX_BUFFER_MAX_LENGTH-1);
|
strncpy((char*)txBuffer,data,XBEE_TX_BUFFER_MAX_LENGTH-1);
|
||||||
txBuffer[XBEE_TX_BUFFER_MAX_LENGTH-1]=0;
|
txBuffer[XBEE_TX_BUFFER_MAX_LENGTH-1]=0;
|
||||||
txRemainingData = strlen((char*)txBuffer);
|
txRemainingData = strlen((char*)txBuffer);
|
||||||
|
|
||||||
if (txRemainingData!=0) {
|
if (txRemainingData!=0) {
|
||||||
txIndex =1;
|
txIndex =1;
|
||||||
txRemainingData=txRemainingData-1;
|
txRemainingData=txRemainingData-1;
|
||||||
|
|
||||||
LL_USART_TransmitData8(hlpuart1.Instance, txBuffer[0]);
|
LL_USART_TransmitData8(hlpuart1.Instance, txBuffer[0]);
|
||||||
LL_USART_EnableIT_TXE(hlpuart1.Instance); // enable TX Interrupt
|
LL_USART_EnableIT_TXE(hlpuart1.Instance); // enable TX Interrupt
|
||||||
}
|
}
|
||||||
//} else status= XBEE_TX_TIMEOUT;
|
} else status= XBEE_TX_TIMEOUT;
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ void XBEE_TX_IRQHandler(void) {
|
||||||
|
|
||||||
if (txRemainingData==0) { // No more data, disable TXE bit
|
if (txRemainingData==0) { // No more data, disable TXE bit
|
||||||
LL_USART_DisableIT_TXE(hlpuart1.Instance);
|
LL_USART_DisableIT_TXE(hlpuart1.Instance);
|
||||||
//xSemaphoreGiveFromISR( xHandleSemaphoreTX, &xHigherPriorityTaskWoken );
|
xSemaphoreGiveFromISR( xHandleSemaphoreTX, &xHigherPriorityTaskWoken );
|
||||||
} else {
|
} else {
|
||||||
LL_USART_TransmitData8(hlpuart1.Instance, txBuffer[txIndex]);
|
LL_USART_TransmitData8(hlpuart1.Instance, txBuffer[txIndex]);
|
||||||
txIndex++;
|
txIndex++;
|
||||||
|
|
|
@ -181,7 +181,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
|
||||||
HAL_NVIC_SetPriority(LPUART1_IRQn, 3, 0);
|
HAL_NVIC_SetPriority(LPUART1_IRQn, 3, 0);
|
||||||
HAL_NVIC_EnableIRQ(LPUART1_IRQn);
|
HAL_NVIC_EnableIRQ(LPUART1_IRQn);
|
||||||
/* USER CODE BEGIN LPUART1_MspInit 1 */
|
/* USER CODE BEGIN LPUART1_MspInit 1 */
|
||||||
//HAL_NVIC_SetPriority(LPUART1_IRQn, 3, 0);
|
//HAL_NVIC_SetPriority(LPUART1_IRQn, 2, 0);
|
||||||
/* USER CODE END LPUART1_MspInit 1 */
|
/* USER CODE END LPUART1_MspInit 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,10 +39,11 @@ extern int __io_getchar(void) __attribute__((weak));
|
||||||
|
|
||||||
extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
|
extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
|
||||||
|
|
||||||
|
|
||||||
char *__env[1] = { 0 };
|
char *__env[1] = { 0 };
|
||||||
char **environ = __env;
|
char **environ = __env;
|
||||||
|
|
||||||
|
uint32_t Counter_Malloc=0;
|
||||||
|
uint32_t Counter_Free=0;
|
||||||
|
|
||||||
/* Functions */
|
/* Functions */
|
||||||
void* malloc(size_t size)
|
void* malloc(size_t size)
|
||||||
|
@ -53,6 +54,7 @@ void* malloc(size_t size)
|
||||||
{
|
{
|
||||||
// We simply wrap the FreeRTOS call into a standard form
|
// We simply wrap the FreeRTOS call into a standard form
|
||||||
ptr = pvPortMalloc(size);
|
ptr = pvPortMalloc(size);
|
||||||
|
Counter_Malloc++;
|
||||||
} // else NULL if there was an error
|
} // else NULL if there was an error
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -65,6 +67,7 @@ void free(void* ptr)
|
||||||
if ((ptr>=(void*)ucHeap) && (ptr<=(void*)ucHeap+configTOTAL_HEAP_SIZE)) {
|
if ((ptr>=(void*)ucHeap) && (ptr<=(void*)ucHeap+configTOTAL_HEAP_SIZE)) {
|
||||||
// We simply wrap the FreeRTOS call into a standard form
|
// We simply wrap the FreeRTOS call into a standard form
|
||||||
vPortFree(ptr);
|
vPortFree(ptr);
|
||||||
|
Counter_Free++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType">
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/>
|
|
||||||
<intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.ip_address_local" value="localhost"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.enabled" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.value" value=""/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Debug/Dumber3.elf","fProjectName":"Dumber3","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.override_start_address_mode" value="default"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.remoteCommand" value="target remote"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startServer" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.exception.divby0" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.exception.unaligned" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.haltonexception" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swd_mode" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_port" value="61235"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_trace_hclk" value="16000000"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.useRemoteTarget" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.vector_table" value=""/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.verify_flash_download" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_allow_halt" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_signal_halt" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_logging" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_max_halt_delay" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_shared_stlink" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="0"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="/home/dimercur/Travail/git/dumber/software/dumber3/Debug/st-link_gdbserver_log.txt"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="enable"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="connect_under_reset"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_txt_serial_number" value="49FF67064970535516370687"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.watchdog_config" value="none"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkenable_rtos" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkrestart_configurations" value="{"fVersion":1,"fItems":[{"fDisplayName":"Reset","fIsSuppressible":false,"fResetAttribute":"Software system reset","fResetStrategies":[{"fDisplayName":"Software system reset","fLaunchAttribute":"system_reset","fGdbCommands":["monitor reset\n"],"fCmdOptions":["-g"]},{"fDisplayName":"Hardware reset","fLaunchAttribute":"hardware_reset","fGdbCommands":["monitor reset hardware\n"],"fCmdOptions":["-g"]},{"fDisplayName":"Core reset","fLaunchAttribute":"core_reset","fGdbCommands":["monitor reset core\n"],"fCmdOptions":["-g"]},{"fDisplayName":"None","fLaunchAttribute":"no_reset","fGdbCommands":[],"fCmdOptions":["-g"]}],"fGdbCommandGroup":{"name":"Additional commands","commands":[]},"fStartApplication":true}]}"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.enableRtosProxy" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyCustomProperties" value=""/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriver" value="freertos"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverAuto" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverPort" value="ARM_CM0"/>
|
|
||||||
<intAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyPort" value="60000"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDeviceId" value="com.st.stm32cube.ide.mcu.debug.stlink"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="61234"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="arm-none-eabi-gdb"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="remote"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/Dumber3.elf"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="Dumber3"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1504381080"/>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
|
||||||
<listEntry value="/Dumber3"/>
|
|
||||||
</listAttribute>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><memoryBlockExpressionList context="reserved-for-future-use"><gdbmemoryBlockExpression address="536875216" label="rxBuffer"/><gdbmemoryBlockExpression address="536875132" label="txBuffer"/></memoryBlockExpressionList>"/>
|
|
||||||
<stringAttribute key="process_factory_id" value="com.st.stm32cube.ide.mcu.debug.launch.HardwareDebugProcessFactory"/>
|
|
||||||
<stringAttribute key="saved_expressions<seperator>Unknown" value="rxBuffer"/>
|
|
||||||
</launchConfiguration>
|
|
|
@ -35,7 +35,7 @@ typedef enum {
|
||||||
MISC_Tests
|
MISC_Tests
|
||||||
} TESTS_Type;
|
} TESTS_Type;
|
||||||
|
|
||||||
TESTS_Type TESTS_Nbr=COMMANDS_Tests; // Number indicating which test is being run
|
TESTS_Type TESTS_Nbr=MOTEURS_Tests; // Number indicating which test is being run
|
||||||
|
|
||||||
void TESTS_BasicTests(void* params);
|
void TESTS_BasicTests(void* params);
|
||||||
|
|
||||||
|
@ -171,12 +171,12 @@ void TESTS_BasicTests(void* params) {
|
||||||
break;
|
break;
|
||||||
case CMD_MOVE:
|
case CMD_MOVE:
|
||||||
|
|
||||||
snprintf(str, 99, "MOVE received\r");
|
snprintf(str, 99, "MOVE received (dist=%hd)\r",((CMD_Move*)cmd)->distance);
|
||||||
cmdSendAnswer(ANS_OK);
|
cmdSendAnswer(ANS_OK);
|
||||||
break;
|
break;
|
||||||
case CMD_TURN:
|
case CMD_TURN:
|
||||||
|
|
||||||
snprintf(str, 99, "TURN received\r");
|
snprintf(str, 99, "TURN received (turns=%hd)\r",((CMD_Turn*)cmd)->turns);
|
||||||
cmdSendAnswer(ANS_OK);
|
cmdSendAnswer(ANS_OK);
|
||||||
break;
|
break;
|
||||||
case CMD_GET_BUSY_STATE:
|
case CMD_GET_BUSY_STATE:
|
||||||
|
@ -199,14 +199,22 @@ void TESTS_BasicTests(void* params) {
|
||||||
snprintf(str, 99, "POWER_OFF received\r");
|
snprintf(str, 99, "POWER_OFF received\r");
|
||||||
cmdSendAnswer(ANS_OK);
|
cmdSendAnswer(ANS_OK);
|
||||||
break;
|
break;
|
||||||
default:
|
case CMD_NONE:
|
||||||
|
snprintf(str, 99, "Unknown command\r");
|
||||||
|
cmdSendAnswer(ANS_UNKNOWN);
|
||||||
|
break;
|
||||||
|
case CMD_INVALID_CHECKSUM:
|
||||||
|
snprintf(str, 99, "Invalid checksum\r");
|
||||||
|
cmdSendAnswer(ANS_ERR);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
snprintf(str, 99, "Unknown command\r");
|
snprintf(str, 99, "Unknown command\r");
|
||||||
cmdSendAnswer(ANS_UNKNOWN);
|
cmdSendAnswer(ANS_UNKNOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(cmd);
|
||||||
MESSAGE_SendMailbox(XBEE_Mailbox, MSG_ID_XBEE_ANS, APPLICATION_Mailbox, (void*)str);
|
MESSAGE_SendMailbox(XBEE_Mailbox, MSG_ID_XBEE_ANS, APPLICATION_Mailbox, (void*)str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,6 +254,40 @@ void TESTS_BasicTests(void* params) {
|
||||||
break;
|
break;
|
||||||
case MOTEURS_Tests:
|
case MOTEURS_Tests:
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
msg = MESSAGE_ReadMailbox(APPLICATION_Mailbox); // Wait for a message from Xbee
|
||||||
|
|
||||||
|
if (msg.id == MSG_ID_XBEE_CMD) {
|
||||||
|
cmd = cmdDecode((char*)msg.data, strlen((char*)msg.data));
|
||||||
|
free(msg.data);
|
||||||
|
|
||||||
|
str[0]=0;
|
||||||
|
switch (cmd->type) {
|
||||||
|
case CMD_RESET:
|
||||||
|
snprintf(str, 99, "RESET received (stop motors)\r");
|
||||||
|
cmdSendAnswer(ANS_OK);
|
||||||
|
MOTEURS_Stop();
|
||||||
|
break;
|
||||||
|
case CMD_MOVE:
|
||||||
|
snprintf(str, 99, "MOVE received (dist=%hd)\r",((CMD_Move*)cmd)->distance);
|
||||||
|
cmdSendAnswer(ANS_OK);
|
||||||
|
MOTEURS_Avance(((CMD_Move*)cmd)->distance);
|
||||||
|
break;
|
||||||
|
case CMD_TURN:
|
||||||
|
snprintf(str, 99, "TURN received (turns=%hd)\r",((CMD_Turn*)cmd)->turns);
|
||||||
|
cmdSendAnswer(ANS_OK);
|
||||||
|
MOTEURS_Tourne(((CMD_Turn*)cmd)->turns);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snprintf(str, 99, "Motor test: cmd M or T et R only\r");
|
||||||
|
cmdSendAnswer(ANS_ERR);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(cmd);
|
||||||
|
MESSAGE_SendMailbox(XBEE_Mailbox, MSG_ID_XBEE_ANS, APPLICATION_Mailbox, (void*)str);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MISC_Tests: // test du bouton on/off
|
case MISC_Tests: // test du bouton on/off
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<loop>false</loop>
|
<loop>true</loop>
|
||||||
<repeat_times>1</repeat_times>
|
<repeat_times>1</repeat_times>
|
||||||
<repeat_period>500</repeat_period>
|
<repeat_period>500</repeat_period>
|
||||||
<packets_list>
|
<packets_list>
|
||||||
|
@ -11,5 +11,56 @@
|
||||||
<packet name="Reset">
|
<packet name="Reset">
|
||||||
<payload>72720D</payload>
|
<payload>72720D</payload>
|
||||||
</packet>
|
</packet>
|
||||||
|
<packet name="Start With Watchdog">
|
||||||
|
<payload>57570D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Reset Watchdog">
|
||||||
|
<payload>77770D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Start Without Watchdog">
|
||||||
|
<payload>75750D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Move forward">
|
||||||
|
<payload>4D3D3230720D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Move backward">
|
||||||
|
<payload>4D3D2D32305F0D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Turn Left">
|
||||||
|
<payload>543D3930600D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Turn Right">
|
||||||
|
<payload>543D2D39304D0D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Get battery">
|
||||||
|
<payload>76760D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Get version">
|
||||||
|
<payload>56560D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Get busy state">
|
||||||
|
<payload>62620D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Test">
|
||||||
|
<payload>74740D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Debug">
|
||||||
|
<payload>61610D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Poweroff">
|
||||||
|
<payload>7A7A0D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Unknown command">
|
||||||
|
<payload>4A4A0D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Invalid Checksum">
|
||||||
|
<payload>543D2D39303D0D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Turn Right - Extreme">
|
||||||
|
<payload>543D2D3332373637730D</payload>
|
||||||
|
</packet>
|
||||||
|
<packet name="Move backward - Extreme">
|
||||||
|
<payload>4D3D2D33323736376A0D</payload>
|
||||||
|
</packet>
|
||||||
</packets_list>
|
</packets_list>
|
||||||
</data>
|
</data>
|
||||||
|
|
Loading…
Add table
Reference in a new issue