Compare commits

...

22 Commits

Author SHA1 Message Date
57b19e59d9 send params 2023-09-01 17:24:32 +02:00
1ad382063c add setup msg 2023-09-01 17:24:17 +02:00
59dcf4e47c update can messages 2023-09-01 16:38:10 +02:00
33dc145a80 add setup param messages 2023-09-01 16:37:58 +02:00
9b304aec93 speed kartculator 2023-09-01 16:37:46 +02:00
863977e20f define default settings 2023-09-01 16:32:51 +02:00
4750463f7b fix break 2023-09-01 16:32:37 +02:00
397b77ab5a fix alive break 2023-09-01 13:23:26 +02:00
b6bb8fca91 up queue for XF timer 2023-09-01 13:23:09 +02:00
1ea26b2a6c fix alive 2023-09-01 13:22:45 +02:00
ae9252cccb clean 2023-09-01 13:22:35 +02:00
d94fcb927d add makefiles 2023-09-01 10:40:20 +02:00
26ea7d0870 fix compiler 2023-09-01 10:40:11 +02:00
296575a4b9 add filter 2023-08-31 20:03:24 +02:00
b52b773633 add CAN_MESSAGE 2023-08-31 20:03:01 +02:00
a20667399b add drive management 2023-08-31 20:02:41 +02:00
2ece901b08 add resurrect for alive checker 2023-08-31 20:02:25 +02:00
7aab0ef049 add resurrect for alive checker 2023-08-31 20:01:39 +02:00
b95b6619e3 move eeprom to app 2023-08-31 17:52:38 +02:00
d31544783c test drive 2023-08-31 17:02:23 +02:00
dc6e4ec65a add kartculator 2023-08-31 13:42:31 +02:00
00130b03ee add blinker 2023-08-30 20:22:44 +02:00
31 changed files with 1884 additions and 1287 deletions

View File

@@ -7,7 +7,6 @@ debug/
dist/
disassembly/
nbproject/private/
nbproject/*.mk
nbproject/*.bash
nbproject/Makefile-genesis.properties

View File

@@ -9,6 +9,7 @@
#include "car.h"
#include "../app/factory/factory.h"
#include "../middleware/can_interface.h"
#include "kartculator.h"
typedef union {
struct {
@@ -20,7 +21,23 @@ typedef union {
uint32_t full;
} BYTES_4;
typedef union {
struct {
uint8_t byte0;
uint8_t byte1;
} separate;
uint16_t full;
} BYTES_2;
void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
BYTES_4 incomeData;
incomeData.full = data;
BYTES_4 revertData;
revertData.separate.byte0 = incomeData.separate.byte3;
revertData.separate.byte1 = incomeData.separate.byte2;
revertData.separate.byte2 = incomeData.separate.byte1;
revertData.separate.byte3 = incomeData.separate.byte0;
switch(idSender){
/*********************
@@ -29,16 +46,15 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
case 0:
if(idMsg == 0x0) { // CONTROL_SETUP
// steeringMode eraseMemory - controlAliveTime
BYTES_4 tmpData;
tmpData.full = data;
if (tmpData.separate.byte1) {
if (incomeData.separate.byte1) {
MEM_reset();
}
KART_CST.CONTROL_STEERING_MODE = tmpData.separate.byte0;
KART_CST.CONTROL_ALIVE_TIME = tmpData.separate.byte3;
KART_CST.CONTROL_STEERING_MODE = incomeData.separate.byte0;
KART_CST.CONTROL_ALIVE_TIME = incomeData.separate.byte3;
MEM_write_1_byte(MEMADD_CONTROL_STEERING_MODE, KART_CST.CONTROL_STEERING_MODE);
MEM_write_1_byte(MEMADD_CONTROL_ALIVE_TIME, KART_CST.CONTROL_ALIVE_TIME);
ALIVE_setAliveTime(ALcontroller(), KART_CST.CONTROL_ALIVE_TIME);
ALIVE_emitStart(ALcontroller(), 0, 0);
}
if(idMsg == 0x1) { // CONTROL_SPEED_FACTOR
@@ -64,10 +80,8 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
if(idMsg == 0x4) { // CONTROL_SECURITY_PARAM
// maxSpeedFw maxSpeedBw - -
BYTES_4 tmpData;
tmpData.full = data;
KART_CST.CONTROL_MAX_SPEED_FW = tmpData.separate.byte0;
KART_CST.CONTROL_MAX_SPEED_BW = tmpData.separate.byte1;
KART_CST.CONTROL_MAX_SPEED_FW = incomeData.separate.byte0;
KART_CST.CONTROL_MAX_SPEED_BW = incomeData.separate.byte1;
MEM_write_1_byte(MEMADD_CONTROL_MAX_SPEED_FW, KART_CST.CONTROL_MAX_SPEED_FW);
MEM_write_1_byte(MEMADD_CONTROL_MAX_SPEED_BW, KART_CST.CONTROL_MAX_SPEED_BW);
@@ -75,64 +89,64 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
if(idMsg == 0x5) { // CONTROL_SETUP_PARAM
// displayAliveTime steeringAliveTime - -
BYTES_4 tmpData;
tmpData.full = data;
KART_CST.DISPLAY_ALIVE_TIME = tmpData.separate.byte0;
KART_CST.STEERING_ALIVE_TIME = tmpData.separate.byte1;
KART_CST.DISPLAY_ALIVE_TIME = incomeData.separate.byte0;
KART_CST.STEERING_ALIVE_TIME = incomeData.separate.byte1;
MEM_write_1_byte(MEMADD_DISPLAY_ALIVE_TIME, KART_CST.DISPLAY_ALIVE_TIME);
MEM_write_1_byte(MEMADD_STEERING_ALIVE_TIME, KART_CST.STEERING_ALIVE_TIME);
// TODO set alive times
// TODO send params
// start alives
CM_DISPLAY_SETUP(NULL);
CM_STEERING_SETUP(NULL);
}
if(idMsg == 0x6) { // CONTROL_SETUP_PARAM_JOY
// joystickMode joystickParam1 joystickParam2 joystickAliveTime
BYTES_4 tmpData;
tmpData.full = data;
KART_CST.JOYSTICK_MODE = tmpData.separate.byte0;
KART_CST.JOYSTICK_PARAM1 = tmpData.separate.byte1;
KART_CST.JOYSTICK_PARAM2 = tmpData.separate.byte2;
KART_CST.JOYSTICK_ALIVE_TIME = tmpData.separate.byte3;
KART_CST.JOYSTICK_MODE = incomeData.separate.byte0;
KART_CST.JOYSTICK_PARAM1 = incomeData.separate.byte1;
KART_CST.JOYSTICK_PARAM2 = incomeData.separate.byte2;
KART_CST.JOYSTICK_ALIVE_TIME = incomeData.separate.byte3;
MEM_write_1_byte(MEMADD_JOYSTICK_MODE, KART_CST.JOYSTICK_MODE);
MEM_write_1_byte(MEMADD_JOYSTICK_PARAM1, KART_CST.JOYSTICK_PARAM1);
MEM_write_1_byte(MEMADD_JOYSTICK_PARAM2, KART_CST.JOYSTICK_PARAM2);
MEM_write_1_byte(MEMADD_JOYSTICK_ALIVE_TIME, KART_CST.JOYSTICK_ALIVE_TIME);
ALIVE_setAliveTime(ALjoy(), KART_CST.JOYSTICK_ALIVE_TIME);
ALIVE_emitStart(ALjoy(), 0, 0);
CM_JOY_SETUP(NULL);
}
if(idMsg == 0x7) { // CONTROL_SETUP_PARAM_DRIVE
// driveAliveTime driveSpeedTime driveStopTime -
BYTES_4 tmpData;
tmpData.full = data;
KART_CST.DRIVE_ALIVE_TIME = tmpData.separate.byte0;
KART_CST.DRIVE_SPEED_TIME = tmpData.separate.byte1;
KART_CST.DRIVE_STOP_TIME = tmpData.separate.byte2;
KART_CST.DRIVE_ALIVE_TIME = incomeData.separate.byte0;
KART_CST.DRIVE_SPEED_TIME = incomeData.separate.byte1;
KART_CST.DRIVE_STOP_TIME = incomeData.separate.byte2;
MEM_write_1_byte(MEMADD_DRIVE_ALIVE_TIME, KART_CST.DRIVE_ALIVE_TIME);
MEM_write_1_byte(MEMADD_DRIVE_SPEED_TIME, KART_CST.DRIVE_SPEED_TIME);
MEM_write_1_byte(MEMADD_DRIVE_STOP_TIME, KART_CST.DRIVE_STOP_TIME);
// TODO set alive time
// TODO send params
ALIVE_setAliveTime(&drive()->myChecker, KART_CST.DRIVE_ALIVE_TIME);
ALIVE_emitStart(&drive()->myChecker, 0, 0);
CM_DRIVE_SETUP(NULL);
}
if(idMsg == 0x8) { // CONTROL_SETUP_PARAM_BATTERY
// batteryVoltTime batteryCurrentTime batteryEnergyTime batteryAliveTime
BYTES_4 tmpData;
tmpData.full = data;
KART_CST.BATTERY_VOLT_TIME = tmpData.separate.byte0;
KART_CST.BATTERY_CURRENT_TIME = tmpData.separate.byte1;
KART_CST.BATTERY_ENERGY_TIME = tmpData.separate.byte2;
KART_CST.BATTERY_ALIVE_TIME = tmpData.separate.byte3;
KART_CST.BATTERY_VOLT_TIME = incomeData.separate.byte0;
KART_CST.BATTERY_CURRENT_TIME = incomeData.separate.byte1;
KART_CST.BATTERY_ENERGY_TIME = incomeData.separate.byte2;
KART_CST.BATTERY_ALIVE_TIME = incomeData.separate.byte3;
MEM_write_1_byte(MEMADD_BATTERY_VOLT_TIME, KART_CST.BATTERY_VOLT_TIME);
MEM_write_1_byte(MEMADD_BATTERY_CURRENT_TIME, KART_CST.BATTERY_CURRENT_TIME);
MEM_write_1_byte(MEMADD_BATTERY_ENERGY_TIME, KART_CST.BATTERY_ENERGY_TIME);
MEM_write_1_byte(MEMADD_BATTERY_ALIVE_TIME, KART_CST.BATTERY_ALIVE_TIME);
// TODO set alive time
// TODO send params
// TODO start alive
CM_SUPPLY_SETUP(NULL);
}
@@ -145,6 +159,8 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
case 2:
if(idMsg == 0x1) { // JOY_MESURE
// posX posY button -
calcTorque(incomeData.separate.byte1);
calcPosition(incomeData.separate.byte0);
}
@@ -157,8 +173,9 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
KART_CST.JOYSTICK_PARAM2 = MEM_read_1_byte(MEMADD_JOYSTICK_PARAM2);
KART_CST.JOYSTICK_ALIVE_TIME = MEM_read_1_byte(MEMADD_JOYSTICK_ALIVE_TIME);
ALIVE_setAliveTime(ALjoy(), KART_CST.JOYSTICK_ALIVE_TIME);
ALIVE_emitResurrect(ALjoy(), 0, 0);
ALIVE_emitBorn(ALjoy(), 0, 0);
ALIVE_emitReady(ALjoy(), 100, 0);
ALIVE_emitReady(ALjoy(), 0, 0);
}
}
break;
@@ -182,12 +199,20 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
case 4:
if(idMsg == 0x0) { // DRIVE_SPEED
// speedHH speedH speedL speedLL
calcSpeed(revertData.full);
DRIVE_emitPollSpeed(drive());
}
if(idMsg == 0xF) { // DRIVE_ALIVE
// statusH statusL - -
// TODO drive say ALIVE
ALIVE_ISALIVE(&drive()->myChecker);
if(drive()->myChecker.state == STAL_DEAD){
KART_CST.DRIVE_SPEED_TIME = MEM_read_1_byte(MEMADD_DRIVE_SPEED_TIME);
KART_CST.DRIVE_STOP_TIME = MEM_read_1_byte(MEMADD_DRIVE_STOP_TIME);
KART_CST.DRIVE_ALIVE_TIME = MEM_read_1_byte(MEMADD_DRIVE_ALIVE_TIME);
ALIVE_emitResurrect(&drive()->myChecker, 0, 0);
ALIVE_emitBorn(&drive()->myChecker, 0, 0);
}
}
break;
@@ -199,7 +224,7 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
case 5:
if(idMsg == 0x1) { // STEERING_GET_CENTER
// valHH valH valL valLL
eKart.center = revertData.full;
}
if(idMsg == 0x2) { // STEERING_GET_POSITION
@@ -291,7 +316,14 @@ void CM_DRIVE_SETUP(void* p) {
void CM_DRIVE_POWER(void* p) {
// valH valL - -
// TODO
BYTES_2 torque;
BYTES_4 tmpData;
torque.full = *((int16_t*) p);
tmpData.separate.byte0 = torque.separate.byte1;
tmpData.separate.byte1 = torque.separate.byte0;
tmpData.separate.byte2 = 0;
tmpData.separate.byte3 = 0;
CAN_Send(4, 1, tmpData.full);
}
void CM_STEERING_SETUP(void* p) {

View File

@@ -75,6 +75,10 @@ void CM_DISPLAY_DIRECTION(void* p);
*/
void CM_DRIVE_SETUP(void* p);
/**
* Send power to the drive
* @param p the torque (int16_t*)
*/
void CM_DRIVE_POWER(void* p);
/**

View File

@@ -69,9 +69,10 @@ typedef struct {
KART_CST_TYPE KART_CST;
typedef struct {
int32_t speed;
uint32_t center;
uint32_t position;
int16_t torque; //
uint32_t center; //
uint32_t position; //
uint8_t speed; // 100m/h
} KART_VAR_TYPE;
KART_VAR_TYPE eKart;

View File

@@ -0,0 +1,171 @@
/**
* @author R<>mi Heredero
* @version 1.0.0
* @date August 2023
* @file drive.c
*/
#include "drive.h"
#include "car.h"
#include "can_message.h"
void DRIVE_init(DRIVE* me){
me->state = STDR_INIT;
ALIVE_init(&me->myChecker);
ALIVE_onSetup(&me->myChecker, CM_DRIVE_SETUP, NULL);
ALIVE_onWait(&me->myChecker, DRIVE_emitStart, me);
ALIVE_onDead(&me->myChecker, DRIVE_emitStop, me);
ALIVE_onBorn(&me->myChecker, DRIVE_emitResurrect, me);
me->wait.f = NULL;
me->run.f = NULL;
me->dead.f = NULL;
}
void DRIVE_startBehaviour(DRIVE* me){
POST(me, &DRIVE_processEvent, evDRinit, 0, 0);
}
bool DRIVE_processEvent(Event* ev) {
bool processed = false;
DRIVE* me = (DRIVE*)Event_getTarget(ev);
DRIVE_STATES oldState = me->state;
evIDT evid = Event_getId(ev);
uint64_t data = Event_getData(ev);
switch (me->state) { // onState
case STDR_INIT:
if (ev->id == evDRinit) {
me->state = STDR_WAIT;
ALIVE_startBehaviourChecker(&me->myChecker); // Start alive checker
}
break;
case STDR_WAIT:
if (ev->id == evDRstart) {
me->state = STDR_RUN;
}
ALIVE_setAliveTime(&me->myChecker, KART_CST.DRIVE_ALIVE_TIME);
ALIVE_emitBorn(&me->myChecker, 100, 0); // Born after 100 ms
ALIVE_emitReady(&me->myChecker, 200, 0); // Ready after 200 ms
break;
case STDR_RUN:
if (ev->id == evDRstop) {
me->state = STDR_DEAD;
}
if (ev->id == evDRpollTorque) {
CM_DRIVE_POWER(&eKart.torque);
}
if (ev->id == evDRpollSpeed) {
CM_DISPLAY_SPEED(&eKart.speed);
}
DRIVE_emitPollTorque(me, KART_CST.DRIVE_STOP_TIME*9, 0);
break;
case STDR_DEAD:
if (ev->id == evDRresurrect) {
me->state = STDR_WAIT;
}
break;
}
if(oldState != me->state){
switch (oldState) { // onExit
case STDR_INIT:
break;
case STDR_WAIT:
break;
case STDR_RUN:
break;
case STDR_DEAD:
break;
}
switch (me->state) { // onEntry
case STDR_INIT:
break;
case STDR_WAIT:
if (me->wait.f != NULL) {
me->wait.f(me->wait.p);
}
break;
case STDR_RUN:
if (me->run.f != NULL) {
me->run.f(me->run.p);
}
break;
case STDR_DEAD:
if (me->dead.f != NULL) {
me->dead.f(me->dead.p);
}
break;
}
processed = true;
}
return processed;
}
/*************
* Callbacks *
*************/
void DRIVE_onWait(DRIVE* me, DRIVE_CALLBACK_FUNCTION f, void* p) {
me->wait.f = f;
me->wait.p = p;
}
void DRIVE_onRun(DRIVE* me, DRIVE_CALLBACK_FUNCTION f, void* p) {
me->run.f = f;
me->run.p = p;
}
void DRIVE_onDead(DRIVE* me, DRIVE_CALLBACK_FUNCTION f, void* p) {
me->dead.f = f;
me->dead.p = p;
}
/************
* EMITTERS *
************/
void DRIVE_emitStart(void* p) {
DRIVE* me = (DRIVE*) p;
POST(me, &DRIVE_processEvent, evDRstart, 0, 0);
}
void DRIVE_emitStop(void* p) {
DRIVE* me = (DRIVE*) p;
POST(me, &DRIVE_processEvent, evDRstop, 0, 0);
}
void DRIVE_emitResurrect(void* p) {
DRIVE* me = (DRIVE*) p;
POST(me, &DRIVE_processEvent, evDRresurrect, 0, 0);
}
void DRIVE_emitPollSpeed(void* p) {
DRIVE* me = (DRIVE*) p;
POST(me, &DRIVE_processEvent, evDRpollSpeed, 0, 0);
}
void DRIVE_emitPollTorque(DRIVE* me, uint16_t t, int64_t data) {
POST(me, &DRIVE_processEvent, evDRpollTorque, t, data);
}
/***********
* SETTERS *
***********/
void DRIVE_setMyChecker(DRIVE* me, ALIVE v) {
me->myChecker = v;
}

View File

@@ -0,0 +1,130 @@
/**
* @author R<>mi Heredero
* @version 1.0.0
* @date August 2023
* @file drive.h
*/
#ifndef DRIVE_H
#define DRIVE_H
#include "../xf/xf.h"
#include "../middleware/alive.h"
typedef enum {
STDR_INIT,
STDR_WAIT,
STDR_RUN,
STDR_DEAD
} DRIVE_STATES;
typedef enum {
evDRinit = 100,
evDRstart,
evDRstop,
evDRresurrect,
evDRpollSpeed,
evDRpollTorque
} DRIVE_EVENTS;
typedef void (*DRIVE_CALLBACK_FUNCTION)(void*);
typedef struct {
DRIVE_CALLBACK_FUNCTION f; // function
void* p; // param(s)
} DRIVE_CALLBACK;
typedef struct {
DRIVE_STATES state;
ALIVE myChecker;
DRIVE_CALLBACK wait;
DRIVE_CALLBACK run;
DRIVE_CALLBACK dead;
} DRIVE;
/**
* Initialize the DRIVE
* @param me the DRIVE itself
*/
void DRIVE_init(DRIVE* me);
/**
* Start the DRIVE state machine
* @param me the DRIVE itself
*/
void DRIVE_startBehaviour(DRIVE* me);
/**
* Process the event
* @param ev the event to process
* @return true if the event is processed
*/
bool DRIVE_processEvent(Event* ev);
/*************
* Callbacks *
*************/
/**
* Set the callback function to call when the DRIVE is entering state wait
* @param me the DRIVE itself
* @param f the function to call
* @param p the param(s) to pass to the function
*/
void DRIVE_onWait(DRIVE* me, DRIVE_CALLBACK_FUNCTION f, void* p);
/**
* Set the callback function to call when the DRIVE is entering state run
* @param me the DRIVE itself
* @param f the function to call
* @param p the param(s) to pass to the function
*/
void DRIVE_onRun(DRIVE* me, DRIVE_CALLBACK_FUNCTION f, void* p);
/**
* Set the callback function to call when the DRIVE is entering state dead
* @param me the DRIVE itself
* @param f the function to call
* @param p the param(s) to pass to the function
*/
void DRIVE_onDead(DRIVE* me, DRIVE_CALLBACK_FUNCTION f, void* p);
/************
* EMITTERS *
************/
/**
* Emit the start event
* @param p the DRIVE itself
*/
void DRIVE_emitStart(void* p);
/**
* Emit the stop event
* @param p the DRIVE itself
*/
void DRIVE_emitStop(void* p);
/**
* Emit the resurrect event
* @param p the DRIVE itself
*/
void DRIVE_emitResurrect(void* p);
/**
* Emit the pollSpeed event
* @param p the DRIVE itself
*/
void DRIVE_emitPollSpeed(void* p);
/**
* Emit the pollTorque event
* @param p the DRIVE itself
*/
void DRIVE_emitPollTorque(DRIVE* me, uint16_t t, int64_t data);
/***********
* SETTERS *
***********/
#endif

View File

@@ -21,25 +21,25 @@ typedef union {
void MEM_init(){
uint8_t check = MEM_read_1_byte(0x0);
if(check != 0x42){
if(check != 0x2A){
KART_CST.CONTROL_STEERING_MODE = 0;
KART_CST.CONTROL_ALIVE_TIME = 50;
KART_CST.CONTROL_SPEED_FACTOR = 0;
KART_CST.CONTROL_POWER_FACTOR = 0;
KART_CST.CONTROL_STEERING_FACTOR = 0;
KART_CST.CONTROL_MAX_SPEED_FW = 0;
KART_CST.CONTROL_MAX_SPEED_BW = 0;
KART_CST.CONTROL_SPEED_FACTOR = 111111;
KART_CST.CONTROL_POWER_FACTOR = 10000;
KART_CST.CONTROL_STEERING_FACTOR = 400000000;
KART_CST.CONTROL_MAX_SPEED_FW = 50;
KART_CST.CONTROL_MAX_SPEED_BW = 25;
KART_CST.JOYSTICK_MODE = 0;
KART_CST.JOYSTICK_PARAM1 = 5;
KART_CST.JOYSTICK_PARAM2 = 1;
KART_CST.JOYSTICK_ALIVE_TIME = 25;
KART_CST.DISPLAY_ALIVE_TIME = 100;
KART_CST.DISPLAY_ALIVE_TIME = 100;
KART_CST.DRIVE_SPEED_TIME = 0;
KART_CST.DRIVE_STOP_TIME = 0;
KART_CST.DRIVE_ALIVE_TIME = 10;
KART_CST.DRIVE_SPEED_TIME = 20;
KART_CST.DRIVE_STOP_TIME = 10;
KART_CST.DRIVE_ALIVE_TIME = 250;
KART_CST.STEERING_ALIVE_TIME = 100;
@@ -74,7 +74,7 @@ void MEM_init(){
MEM_write_1_byte(MEMADD_BATTERY_ENERGY_TIME, KART_CST.BATTERY_ENERGY_TIME);
MEM_write_1_byte(MEMADD_BATTERY_ALIVE_TIME, KART_CST.BATTERY_ALIVE_TIME);
MEM_write_1_byte(0x0, 0x42);
MEM_write_1_byte(0x0, 0x2A);
} else {
KART_CST.CONTROL_STEERING_MODE = MEM_read_1_byte(MEMADD_CONTROL_STEERING_MODE);
KART_CST.CONTROL_ALIVE_TIME = MEM_read_1_byte(MEMADD_CONTROL_ALIVE_TIME);

View File

@@ -30,6 +30,10 @@ LED* l8() {
return &theFactory.l8_;
}
BLINKER* b1() {
return &theFactory.b1_;
}
ALIVE* ALcontroller(){
return &theFactory.ALcontroller_;
}
@@ -38,6 +42,10 @@ ALIVE* ALjoy(){
return &theFactory.ALjoy_;
}
DRIVE* drive(){
return &theFactory.drive_;
}
//initialize all objects
void Factory_init() {
@@ -58,6 +66,8 @@ void Factory_init() {
LED_initHW(l6());
LED_initHW(l7());
LED_initHW(l8());
BLINKER_init(b1());
CAN_init();
CAN_setSender(1);
@@ -69,6 +79,7 @@ void Factory_init() {
ALIVE_setAliveTime(ALcontroller(), KART_CST.CONTROL_ALIVE_TIME);
ALIVE_init(ALjoy());
DRIVE_init(drive());
}
//connect objects if required
@@ -78,20 +89,30 @@ void Factory_build() {
ALIVE_onAlive(ALcontroller(), CM_CONTROLLER_ALIVE, NULL);
//BLINKER_onOn(b1(), LED_on, l6());
//BLINKER_onOff(b1(), LED_off, l6());
ALIVE_onSetup(ALjoy(), CM_JOY_SETUP, NULL);
ALIVE_setAliveTime(ALjoy(), KART_CST.JOYSTICK_ALIVE_TIME);
ALIVE_onBorn(ALjoy(), LED_on, l1());
ALIVE_onDead(ALjoy(), LED_off, l1());
DRIVE_onRun(drive(), LED_on, l2());
DRIVE_onDead(drive(), LED_off, l2());
}
//start all state machines
void Factory_start() {
CAN_startBehaviour();
DRIVE_startBehaviour(drive());
ALIVE_startBehaviourSender(ALcontroller());
ALIVE_startBehaviourChecker(ALjoy());
ALIVE_emitBorn(ALjoy(), 100, 0);
ALIVE_emitReady(ALjoy(), 200, 0);
}

View File

@@ -14,11 +14,13 @@
#include "../car.h"
#include "../can_message.h"
#include "../eeprom.h"
#include "../drive.h"
#include "../../board/led/led.h"
#include "../../board/button/button.h"
#include "../../middleware/alive.h"
#include "../../middleware/can_interface.h"
#include "../../middleware/eeprom.h"
#include "../../middleware/blinker.h"
typedef struct {
@@ -31,8 +33,11 @@ typedef struct {
LED l7_;
LED l8_;
BLINKER b1_;
ALIVE ALcontroller_;
ALIVE ALjoy_;
DRIVE drive_;
} Factory;
@@ -51,8 +56,11 @@ LED* l6();
LED* l7();
LED* l8();
BLINKER* b1();
ALIVE* ALcontroller();
ALIVE* ALjoy();
DRIVE* drive();
#endif

View File

@@ -0,0 +1,47 @@
/**
* @author R<>mi Heredero
* @version. 0.0.0
* @date August 2023
* @file kartculator.c
*/
#include "kartculator.h"
void calcTorque(uint8_t joy_pos) {
int32_t calcTorque;
calcTorque = (int8_t) joy_pos; // joystick position
calcTorque *= KART_CST.CONTROL_POWER_FACTOR; // convert by power factor
calcTorque /= 1000; // torque define by joystick
eKart.torque = (int16_t) calcTorque;
}
void calcPosition(uint8_t joy_pos){
int32_t calcPosition;
calcPosition = (int8_t) joy_pos;
}
void calcSpeed(int32_t rpm) {
int32_t calcSpeed;
if(rpm>=0){
calcSpeed = rpm;
} else {
calcSpeed = -rpm;
}
calcSpeed *= 1000;
calcSpeed /= KART_CST.CONTROL_SPEED_FACTOR;
eKart.speed = (uint8_t) calcSpeed;
}
int16_t getTorque() {
}
uint32_t getPosition() {
}
uint8_t getSpeed() {
}

View File

@@ -0,0 +1,24 @@
/**
* @author R<>mi Heredero
* @version. 0.0.0
* @date August 2023
* @file kartculator.h
*/
#ifndef KARTCULATOR_H
#define KARTCULATOR_H
#include <stdint.h> // usage of standard types
#include <stdbool.h> // usage of boolean types
#include "../mcc_generated_files/mcc.h"
#include "car.h"
void calcTorque(uint8_t joy_pos);
void calcPosition(uint8_t joy_pos);
void calcSpeed(int32_t rpm);
int16_t getTorque();
uint32_t getPosition();
uint8_t getSpeed();
#endif /* KARTCULATOR_H */

Binary file not shown.

View File

@@ -80,8 +80,8 @@ bool ALIVE_processEvent(Event* ev) {
break;
case STAL_DEAD:
if (ev->id == evALborn) {
me->state = STAL_BORN;
if (ev->id == evALresurrect) {
me->state = STAL_SETUP;
}
break;
@@ -92,7 +92,7 @@ bool ALIVE_processEvent(Event* ev) {
}
if (me->aliveTime == 0) {
if (me->haveBreak){
me->state == STAL_BREAK;
me->state = STAL_BREAK;
}
} else {
ALIVE_emitPoll(me, me->aliveTime*10, 0);
@@ -142,6 +142,7 @@ bool ALIVE_processEvent(Event* ev) {
break;
case STAL_SETUP:
me->checker = true;
if (me->setup.f != NULL) {
me->setup.f(me->setup.p);
}
@@ -166,6 +167,7 @@ bool ALIVE_processEvent(Event* ev) {
break;
case STAL_ALIVE:
me->sender = true;
break;
case STAL_BREAK:
@@ -238,6 +240,10 @@ void ALIVE_emitStart(ALIVE* me, uint16_t t, int64_t data) {
POST(me, &ALIVE_processEvent, evALstart, t, data);
}
void ALIVE_emitResurrect(ALIVE* me, uint16_t t, int64_t data) {
POST(me, &ALIVE_processEvent, evALresurrect, t, data);
}
/***********
* SETTERS *
***********/

View File

@@ -25,7 +25,8 @@ typedef enum {
evALborn,
evALready,
evALpoll,
evALstart
evALstart,
evALresurrect
} ALIVE_EVENTS;
typedef void (*ALIVE_CALLBACK_FUNCTION)(void*);
@@ -162,6 +163,14 @@ void ALIVE_emitPoll(ALIVE* me, uint16_t t, int64_t data);
*/
void ALIVE_emitStart(ALIVE* me, uint16_t t, int64_t data);
/**
* Emit the resurrect event
* @param me the ALIVE itself
* @param t time to wait in ms before triggering event
* @param data data to put on the event for XF
*/
void ALIVE_emitResurrect(ALIVE* me, uint16_t t, int64_t data);
/***********
* SETTERS *

View File

@@ -0,0 +1,189 @@
/**
* @author Rémi Heredero
* @version 1.0.0
* @date July 2023
* @file blinker.c
*/
#include "blinker.h"
void BLINKER_init(BLINKER* me){
me->state = STBL_INIT;
me->timeOn = 500;
me->timeOff = 500;
me->numberOfBlink = 3;
me->nBlinkIsOn = false;
me->remainBlinks = 3;
me->wait.f = NULL;
me->on.f = NULL;
me->off.f = NULL;
me->finished.f = NULL;
}
void BLINKER_startBehaviour(BLINKER* me) {
POST(me, &BLINKER_processEvent, evBLinit, 0, 0);
}
bool BLINKER_processEvent(Event* ev) {
bool processed = false;
BLINKER* me = (BLINKER*)Event_getTarget(ev);
BLINKER_STATES oldState = me->state;
evIDT evid = Event_getId(ev);
switch (me->state) { // onState
case STBL_INIT:
if (ev->id == evBLinit) {
me->state = STBL_WAIT;
}
break;
case STBL_WAIT:
me->remainBlinks = me->numberOfBlink;
if(evid == evBLblinkN) {
me->state = STBL_ON;
me->nBlinkIsOn = true;
BLINKER_emitTimer(me, me->timeOn);
}
if(evid == evBLblink) {
me->state = STBL_ON;
me->nBlinkIsOn = false;
BLINKER_emitTimer(me, me->timeOn);
}
break;
case STBL_ON:
if (me->nBlinkIsOn) {
me->remainBlinks--;
}
if (evid == evBLtimer) {
me->state = STBL_OFF;
BLINKER_emitTimer(me, me->timeOff);
}
break;
case STBL_OFF:
if (evid == evBLtimer) {
if (me->remainBlinks == 0) {
me->state = STBL_WAIT;
if (me->finished.f != NULL) {
me->finished.f(me->finished.p);
}
} else {
me->state = STBL_ON;
BLINKER_emitTimer(me, me->timeOn);
}
}
break;
}
if(oldState != me->state){
switch (oldState) { // onExit
case STBL_INIT:
break;
case STBL_WAIT:
break;
case STBL_ON:
break;
case STBL_OFF:
break;
}
switch (me->state) { // onEntry
case STBL_INIT:
break;
case STBL_WAIT:
if (me->wait.f != NULL) {
me->wait.f(me->wait.p);
}
break;
case STBL_ON:
if (me->on.f != NULL) {
me->on.f(me->on.p);
}
break;
case STBL_OFF:
if (me->off.f != NULL) {
me->off.f(me->off.p);
}
break;
}
processed = true;
}
return processed;
}
/*************
* Callbacks *
*************/
void BLINKER_onWait(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
me->wait.f = f;
me->wait.p = p;
}
void BLINKER_onOn(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
me->on.f = f;
me->on.p = p;
}
void BLINKER_onOff(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
me->off.f = f;
me->off.p = p;
}
void BLINKER_onFinished(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p) {
me->finished.f = f;
me->finished.p = p;
}
/************
* EMITTERS *
************/
void BLINKER_emitBlink(BLINKER* me, uint16_t t) {
POST(me, &BLINKER_processEvent, evBLblink, t, 0);
}
void BLINKER_emitBlinkN(BLINKER* me, uint16_t t) {
POST(me, &BLINKER_processEvent, evBLblinkN, t, 0);
}
void BLINKER_emitTimer(BLINKER* me, uint16_t t) {
POST(me, &BLINKER_processEvent, evBLtimer, t, 0);
}
/***********
* SETTERS *
***********/
void BLINKER_setTimeOn(BLINKER* me, uint16_t v) {
me->timeOn = v;
}
void BLINKER_setTimeOff(BLINKER* me, uint16_t v) {
me->timeOff = v;
}
void BLINKER_setNumberOfBlink(BLINKER* me, uint8_t v) {
me->numberOfBlink = v;
}
void BLINKER_setNBlinkIsOn(BLINKER* me, bool v) {
me->nBlinkIsOn = v;
}
void BLINKER_setRemainBlinks(BLINKER* me, uint8_t v) {
me->remainBlinks = v;
}
void BLINKER_endBlink(BLINKER* me) {
me->remainBlinks = 0;
}

View File

@@ -0,0 +1,167 @@
/**
* @author Rémi Heredero
* @version 1.0.0
* @date July 2023
* @file blinker.h
*/
#ifndef BLINKER_H
#define BLINKER_H
#include "../xf/xf.h"
typedef enum {
STBL_INIT,
STBL_WAIT,
STBL_ON,
STBL_OFF
} BLINKER_STATES;
typedef enum {
evBLinit = 200,
evBLblink,
evBLblinkN,
evBLtimer
} BLINKER_EVENTS;
typedef void (*BLINKER_CALLBACK_FUNCTION)(void*);
typedef struct {
BLINKER_CALLBACK_FUNCTION f; // function
void* p; // param(s)
} BLINKER_CALLBACK;
typedef struct {
BLINKER_STATES state; //Actual state
uint16_t timeOn; // Time on
uint16_t timeOff; // Time off
uint8_t numberOfBlink; // Number of blink for this blinker when start with blinkN
bool nBlinkIsOn; // If the nBlink way is enable
uint8_t remainBlinks; // Actual remain blink
BLINKER_CALLBACK wait;
BLINKER_CALLBACK on;
BLINKER_CALLBACK off;
BLINKER_CALLBACK finished;
} BLINKER;
/**
* Initialize the BLINKER
* @param me the BLINKER itself
*/
void BLINKER_init(BLINKER* me);
/**
* Start the BLINKER state machine
* @param me the BLINKER itself
*/
void BLINKER_startBehaviour(BLINKER* me);
/**
* Process the event
* @param ev the event to process
* @return true if the event is processed
*/
bool BLINKER_processEvent(Event* ev);
/*************
* Callbacks *
*************/
/**
* Set the callback function to call when the BLINKER is entering state wait
* @param me the BLINKER itself
* @param f the function to call
* @param p the param(s) to pass to the function
*/
void BLINKER_onWait(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
/**
* Set the callback function to call when the BLINKER is entering state on
* @param me the BLINKER itself
* @param f the function to call
* @param p the param(s) to pass to the function
*/
void BLINKER_onOn(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
/**
* Set the callback function to call when the BLINKER is entering state off
* @param me the BLINKER itself
* @param f the function to call
* @param p the param(s) to pass to the function
*/
void BLINKER_onOff(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
/**
* Set the callabck function to call when the BLINKER is entering state finished
* @param me the BLINKER itself
* @param f the function to call
* @param t the param(s) to pass to the function
*/
void BLINKER_onFinished(BLINKER* me, BLINKER_CALLBACK_FUNCTION f, void* p);
/************
* EMITTERS *
************/
/**
* Emit the blink event
* @param me the BLINKER itself
* @param t time to wait in ms before triggering event
*/void BLINKER_emitBlink(BLINKER* me, uint16_t t);
/**
* Emit the blinkn event
* @param me the BLINKER itself
* @param t time to wait in ms before triggering event
*/void BLINKER_emitBlinkN(BLINKER* me, uint16_t t);
/**
* Emit the timer event
* @param me the BLINKER itself
* @param t time to wait in ms before triggering event
*/void BLINKER_emitTimer(BLINKER* me, uint16_t t);
/***********
* SETTERS *
***********/
/**
* Set the time on
* @param me the BLINKER itself
* @param v the value to set
*/
void BLINKER_setTimeOn(BLINKER* me, uint16_t v);
/**
* Set the time off
* @param me the BLINKER itself
* @param v the value to set
*/
void BLINKER_setTimeOff(BLINKER* me, uint16_t v);
/**
* Set the number of blink
* @param me the BLINKER itself
* @param v the value to set
*/
void BLINKER_setNumberOfBlink(BLINKER* me, uint8_t v);
/**
* Set the nBlinkIsOn
* @param me the BLINKER itself
* @param v the value to set
*/
void BLINKER_setNBlinkIsOn(BLINKER* me, bool v);
/**
* Set the remain blink(s)
* @param me the BLINKER itself
* @param v the value to set
*/
void BLINKER_setRemainBlinks(BLINKER* me, uint8_t v);
/**
* Stop to blink if it was indefinitely blinking
* @param me the blinker itself
*/
void BLINKER_endBlink(BLINKER* me);
#endif

View File

@@ -0,0 +1,444 @@
#
# Generated Makefile - do not edit!
#
# Edit the Makefile in the project folder instead (../Makefile). Each target
# has a -pre and a -post target defined where you can add customized code.
#
# This makefile implements configuration specific macros and targets.
# Include project Makefile
ifeq "${IGNORE_LOCAL}" "TRUE"
# do not include local makefile. User is passing all local related variables already
else
include Makefile
# Include makefile containing local settings
ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
include nbproject/Makefile-local-default.mk
endif
endif
# Environment
MKDIR=gnumkdir -p
RM=rm -f
MV=mv
CP=cp
# Macros
CND_CONF=default
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
IMAGE_TYPE=debug
OUTPUT_SUFFIX=elf
DEBUGGABLE_SUFFIX=elf
FINAL_IMAGE=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
else
IMAGE_TYPE=production
OUTPUT_SUFFIX=hex
DEBUGGABLE_SUFFIX=elf
FINAL_IMAGE=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
endif
ifeq ($(COMPARE_BUILD), true)
COMPARISON_BUILD=-mafrlcsj
else
COMPARISON_BUILD=
endif
# Object Directory
OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
# Distribution Directory
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
# Source Files Quoted if spaced
SOURCEFILES_QUOTED_IF_SPACED=app/factory/factory.c app/can_message.c app/kartculator.c app/eeprom.c app/drive.c board/led/led.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c mcc_generated_files/pin_manager.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/ecan.c mcc_generated_files/memory.c middleware/can_interface.c middleware/alive.c middleware/blinker.c xf/event.c xf/xf.c main.c
# Object Files Quoted if spaced
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/app/factory/factory.p1 ${OBJECTDIR}/app/can_message.p1 ${OBJECTDIR}/app/kartculator.p1 ${OBJECTDIR}/app/eeprom.p1 ${OBJECTDIR}/app/drive.p1 ${OBJECTDIR}/board/led/led.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/ecan.p1 ${OBJECTDIR}/mcc_generated_files/memory.p1 ${OBJECTDIR}/middleware/can_interface.p1 ${OBJECTDIR}/middleware/alive.p1 ${OBJECTDIR}/middleware/blinker.p1 ${OBJECTDIR}/xf/event.p1 ${OBJECTDIR}/xf/xf.p1 ${OBJECTDIR}/main.p1
POSSIBLE_DEPFILES=${OBJECTDIR}/app/factory/factory.p1.d ${OBJECTDIR}/app/can_message.p1.d ${OBJECTDIR}/app/kartculator.p1.d ${OBJECTDIR}/app/eeprom.p1.d ${OBJECTDIR}/app/drive.p1.d ${OBJECTDIR}/board/led/led.p1.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d ${OBJECTDIR}/middleware/can_interface.p1.d ${OBJECTDIR}/middleware/alive.p1.d ${OBJECTDIR}/middleware/blinker.p1.d ${OBJECTDIR}/xf/event.p1.d ${OBJECTDIR}/xf/xf.p1.d ${OBJECTDIR}/main.p1.d
# Object Files
OBJECTFILES=${OBJECTDIR}/app/factory/factory.p1 ${OBJECTDIR}/app/can_message.p1 ${OBJECTDIR}/app/kartculator.p1 ${OBJECTDIR}/app/eeprom.p1 ${OBJECTDIR}/app/drive.p1 ${OBJECTDIR}/board/led/led.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/ecan.p1 ${OBJECTDIR}/mcc_generated_files/memory.p1 ${OBJECTDIR}/middleware/can_interface.p1 ${OBJECTDIR}/middleware/alive.p1 ${OBJECTDIR}/middleware/blinker.p1 ${OBJECTDIR}/xf/event.p1 ${OBJECTDIR}/xf/xf.p1 ${OBJECTDIR}/main.p1
# Source Files
SOURCEFILES=app/factory/factory.c app/can_message.c app/kartculator.c app/eeprom.c app/drive.c board/led/led.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c mcc_generated_files/pin_manager.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/ecan.c mcc_generated_files/memory.c middleware/can_interface.c middleware/alive.c middleware/blinker.c xf/event.c xf/xf.c main.c
CFLAGS=
ASFLAGS=
LDLIBSOPTIONS=
############# Tool locations ##########################################
# If you copy a project from one host to another, the path where the #
# compiler is installed may be different. #
# If you open this project with MPLAB X in the new host, this #
# makefile will be regenerated and the paths will be corrected. #
#######################################################################
# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
FIXDEPS=fixDeps
.build-conf: ${BUILD_SUBPROJECTS}
ifneq ($(INFORMATION_MESSAGE), )
@echo $(INFORMATION_MESSAGE)
endif
${MAKE} -f nbproject/Makefile-default.mk ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
MP_PROCESSOR_OPTION=18F26K83
# ------------------------------------------------------------------------------------
# Rules for buildStep: compile
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${OBJECTDIR}/app/factory/factory.p1: app/factory/factory.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app/factory"
@${RM} ${OBJECTDIR}/app/factory/factory.p1.d
@${RM} ${OBJECTDIR}/app/factory/factory.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/factory/factory.p1 app/factory/factory.c
@-${MV} ${OBJECTDIR}/app/factory/factory.d ${OBJECTDIR}/app/factory/factory.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/factory/factory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/can_message.p1: app/can_message.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/can_message.p1.d
@${RM} ${OBJECTDIR}/app/can_message.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/can_message.p1 app/can_message.c
@-${MV} ${OBJECTDIR}/app/can_message.d ${OBJECTDIR}/app/can_message.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/can_message.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/kartculator.p1: app/kartculator.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/kartculator.p1.d
@${RM} ${OBJECTDIR}/app/kartculator.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/kartculator.p1 app/kartculator.c
@-${MV} ${OBJECTDIR}/app/kartculator.d ${OBJECTDIR}/app/kartculator.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/kartculator.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/eeprom.p1: app/eeprom.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/eeprom.p1.d
@${RM} ${OBJECTDIR}/app/eeprom.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/eeprom.p1 app/eeprom.c
@-${MV} ${OBJECTDIR}/app/eeprom.d ${OBJECTDIR}/app/eeprom.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/eeprom.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/drive.p1: app/drive.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/drive.p1.d
@${RM} ${OBJECTDIR}/app/drive.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/drive.p1 app/drive.c
@-${MV} ${OBJECTDIR}/app/drive.d ${OBJECTDIR}/app/drive.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/drive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/board/led/led.p1: board/led/led.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/board/led"
@${RM} ${OBJECTDIR}/board/led/led.p1.d
@${RM} ${OBJECTDIR}/board/led/led.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/board/led/led.p1 board/led/led.c
@-${MV} ${OBJECTDIR}/board/led/led.d ${OBJECTDIR}/board/led/led.p1.d
@${FIXDEPS} ${OBJECTDIR}/board/led/led.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1: mcc_generated_files/interrupt_manager.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/tmr0.p1: mcc_generated_files/tmr0.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/tmr0.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/pin_manager.p1: mcc_generated_files/pin_manager.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 mcc_generated_files/pin_manager.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/pin_manager.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/device_config.p1: mcc_generated_files/device_config.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/device_config.p1 mcc_generated_files/device_config.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/device_config.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/mcc.p1: mcc_generated_files/mcc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/mcc.p1 mcc_generated_files/mcc.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/mcc.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/ecan.p1: mcc_generated_files/ecan.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/ecan.p1 mcc_generated_files/ecan.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/ecan.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/memory.p1: mcc_generated_files/memory.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/memory.p1 mcc_generated_files/memory.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/memory.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/memory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/middleware/can_interface.p1: middleware/can_interface.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/middleware"
@${RM} ${OBJECTDIR}/middleware/can_interface.p1.d
@${RM} ${OBJECTDIR}/middleware/can_interface.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/middleware/can_interface.p1 middleware/can_interface.c
@-${MV} ${OBJECTDIR}/middleware/can_interface.d ${OBJECTDIR}/middleware/can_interface.p1.d
@${FIXDEPS} ${OBJECTDIR}/middleware/can_interface.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/middleware/alive.p1: middleware/alive.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/middleware"
@${RM} ${OBJECTDIR}/middleware/alive.p1.d
@${RM} ${OBJECTDIR}/middleware/alive.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/middleware/alive.p1 middleware/alive.c
@-${MV} ${OBJECTDIR}/middleware/alive.d ${OBJECTDIR}/middleware/alive.p1.d
@${FIXDEPS} ${OBJECTDIR}/middleware/alive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/middleware/blinker.p1: middleware/blinker.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/middleware"
@${RM} ${OBJECTDIR}/middleware/blinker.p1.d
@${RM} ${OBJECTDIR}/middleware/blinker.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/middleware/blinker.p1 middleware/blinker.c
@-${MV} ${OBJECTDIR}/middleware/blinker.d ${OBJECTDIR}/middleware/blinker.p1.d
@${FIXDEPS} ${OBJECTDIR}/middleware/blinker.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/xf/event.p1: xf/event.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/xf"
@${RM} ${OBJECTDIR}/xf/event.p1.d
@${RM} ${OBJECTDIR}/xf/event.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/xf/event.p1 xf/event.c
@-${MV} ${OBJECTDIR}/xf/event.d ${OBJECTDIR}/xf/event.p1.d
@${FIXDEPS} ${OBJECTDIR}/xf/event.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/xf/xf.p1: xf/xf.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/xf"
@${RM} ${OBJECTDIR}/xf/xf.p1.d
@${RM} ${OBJECTDIR}/xf/xf.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/xf/xf.p1 xf/xf.c
@-${MV} ${OBJECTDIR}/xf/xf.d ${OBJECTDIR}/xf/xf.p1.d
@${FIXDEPS} ${OBJECTDIR}/xf/xf.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/main.p1: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/main.p1.d
@${RM} ${OBJECTDIR}/main.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit3 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/main.p1 main.c
@-${MV} ${OBJECTDIR}/main.d ${OBJECTDIR}/main.p1.d
@${FIXDEPS} ${OBJECTDIR}/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
else
${OBJECTDIR}/app/factory/factory.p1: app/factory/factory.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app/factory"
@${RM} ${OBJECTDIR}/app/factory/factory.p1.d
@${RM} ${OBJECTDIR}/app/factory/factory.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/factory/factory.p1 app/factory/factory.c
@-${MV} ${OBJECTDIR}/app/factory/factory.d ${OBJECTDIR}/app/factory/factory.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/factory/factory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/can_message.p1: app/can_message.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/can_message.p1.d
@${RM} ${OBJECTDIR}/app/can_message.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/can_message.p1 app/can_message.c
@-${MV} ${OBJECTDIR}/app/can_message.d ${OBJECTDIR}/app/can_message.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/can_message.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/kartculator.p1: app/kartculator.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/kartculator.p1.d
@${RM} ${OBJECTDIR}/app/kartculator.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/kartculator.p1 app/kartculator.c
@-${MV} ${OBJECTDIR}/app/kartculator.d ${OBJECTDIR}/app/kartculator.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/kartculator.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/eeprom.p1: app/eeprom.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/eeprom.p1.d
@${RM} ${OBJECTDIR}/app/eeprom.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/eeprom.p1 app/eeprom.c
@-${MV} ${OBJECTDIR}/app/eeprom.d ${OBJECTDIR}/app/eeprom.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/eeprom.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/app/drive.p1: app/drive.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/app"
@${RM} ${OBJECTDIR}/app/drive.p1.d
@${RM} ${OBJECTDIR}/app/drive.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/app/drive.p1 app/drive.c
@-${MV} ${OBJECTDIR}/app/drive.d ${OBJECTDIR}/app/drive.p1.d
@${FIXDEPS} ${OBJECTDIR}/app/drive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/board/led/led.p1: board/led/led.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/board/led"
@${RM} ${OBJECTDIR}/board/led/led.p1.d
@${RM} ${OBJECTDIR}/board/led/led.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/board/led/led.p1 board/led/led.c
@-${MV} ${OBJECTDIR}/board/led/led.d ${OBJECTDIR}/board/led/led.p1.d
@${FIXDEPS} ${OBJECTDIR}/board/led/led.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1: mcc_generated_files/interrupt_manager.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/tmr0.p1: mcc_generated_files/tmr0.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/tmr0.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/pin_manager.p1: mcc_generated_files/pin_manager.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 mcc_generated_files/pin_manager.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/pin_manager.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/device_config.p1: mcc_generated_files/device_config.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/device_config.p1 mcc_generated_files/device_config.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/device_config.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/mcc.p1: mcc_generated_files/mcc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/mcc.p1 mcc_generated_files/mcc.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/mcc.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/ecan.p1: mcc_generated_files/ecan.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/ecan.p1 mcc_generated_files/ecan.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/ecan.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/mcc_generated_files/memory.p1: mcc_generated_files/memory.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/mcc_generated_files"
@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1.d
@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/memory.p1 mcc_generated_files/memory.c
@-${MV} ${OBJECTDIR}/mcc_generated_files/memory.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d
@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/memory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/middleware/can_interface.p1: middleware/can_interface.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/middleware"
@${RM} ${OBJECTDIR}/middleware/can_interface.p1.d
@${RM} ${OBJECTDIR}/middleware/can_interface.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/middleware/can_interface.p1 middleware/can_interface.c
@-${MV} ${OBJECTDIR}/middleware/can_interface.d ${OBJECTDIR}/middleware/can_interface.p1.d
@${FIXDEPS} ${OBJECTDIR}/middleware/can_interface.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/middleware/alive.p1: middleware/alive.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/middleware"
@${RM} ${OBJECTDIR}/middleware/alive.p1.d
@${RM} ${OBJECTDIR}/middleware/alive.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/middleware/alive.p1 middleware/alive.c
@-${MV} ${OBJECTDIR}/middleware/alive.d ${OBJECTDIR}/middleware/alive.p1.d
@${FIXDEPS} ${OBJECTDIR}/middleware/alive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/middleware/blinker.p1: middleware/blinker.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/middleware"
@${RM} ${OBJECTDIR}/middleware/blinker.p1.d
@${RM} ${OBJECTDIR}/middleware/blinker.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/middleware/blinker.p1 middleware/blinker.c
@-${MV} ${OBJECTDIR}/middleware/blinker.d ${OBJECTDIR}/middleware/blinker.p1.d
@${FIXDEPS} ${OBJECTDIR}/middleware/blinker.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/xf/event.p1: xf/event.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/xf"
@${RM} ${OBJECTDIR}/xf/event.p1.d
@${RM} ${OBJECTDIR}/xf/event.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/xf/event.p1 xf/event.c
@-${MV} ${OBJECTDIR}/xf/event.d ${OBJECTDIR}/xf/event.p1.d
@${FIXDEPS} ${OBJECTDIR}/xf/event.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/xf/xf.p1: xf/xf.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/xf"
@${RM} ${OBJECTDIR}/xf/xf.p1.d
@${RM} ${OBJECTDIR}/xf/xf.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/xf/xf.p1 xf/xf.c
@-${MV} ${OBJECTDIR}/xf/xf.d ${OBJECTDIR}/xf/xf.p1.d
@${FIXDEPS} ${OBJECTDIR}/xf/xf.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/main.p1: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/main.p1.d
@${RM} ${OBJECTDIR}/main.p1
${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/main.p1 main.c
@-${MV} ${OBJECTDIR}/main.d ${OBJECTDIR}/main.p1.d
@${FIXDEPS} ${OBJECTDIR}/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: assemble
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: assembleWithPreprocess
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: link
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${DISTDIR}
${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.map -D__DEBUG=1 -mdebugger=pickit3 -DXPRJ_default=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}
@${RM} ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.hex
else
${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${DISTDIR}
${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.map -DXPRJ_default=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}
endif
# Subprojects
.build-subprojects:
# Subprojects
.clean-subprojects:
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
${RM} -r ${OBJECTDIR}
${RM} -r ${DISTDIR}
# Enable dependency checking
.dep.inc: .depcheck-impl
DEPFILES=$(wildcard ${POSSIBLE_DEPFILES})
ifneq (${DEPFILES},)
include ${DEPFILES}
endif

View File

@@ -0,0 +1,69 @@
#
# Generated Makefile - do not edit!
#
# Edit the Makefile in the project folder instead (../Makefile). Each target
# has a pre- and a post- target defined where you can add customization code.
#
# This makefile implements macros and targets common to all configurations.
#
# NOCDDL
# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
# and .clean-reqprojects-conf unless SUB has the value 'no'
SUB_no=NO
SUBPROJECTS=${SUB_${SUB}}
BUILD_SUBPROJECTS_=.build-subprojects
BUILD_SUBPROJECTS_NO=
BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
CLEAN_SUBPROJECTS_=.clean-subprojects
CLEAN_SUBPROJECTS_NO=
CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
# Project Name
PROJECTNAME=306-controller_interface.X
# Active Configuration
DEFAULTCONF=default
CONF=${DEFAULTCONF}
# All Configurations
ALLCONFS=default
# build
.build-impl: .build-pre
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
# clean
.clean-impl: .clean-pre
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
# clobber
.clobber-impl: .clobber-pre .depcheck-impl
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
# all
.all-impl: .all-pre .depcheck-impl
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
# dependency checking support
.depcheck-impl:
# @echo "# This code depends on make tool being used" >.dep.inc
# @if [ -n "${MAKE_VERSION}" ]; then \
# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
# echo "include \$${DEPFILES}" >>.dep.inc; \
# echo "endif" >>.dep.inc; \
# else \
# echo ".KEEP_STATE:" >>.dep.inc; \
# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
# fi

View File

@@ -0,0 +1,37 @@
#
# Generated Makefile - do not edit!
#
#
# This file contains information about the location of compilers and other tools.
# If you commmit this file into your revision control server, you will be able to
# to checkout the project and build it from the command line with make. However,
# if more than one person works on the same project, then this file might show
# conflicts since different users are bound to have compilers in different places.
# In that case you might choose to not commit this file and let MPLAB X recreate this file
# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
# least once so the file gets created and the project can be built. Finally, you can also
# avoid using this file at all if you are only building from the command line with make.
# You can invoke make with the values of the macros:
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
#
SHELL=cmd.exe
PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
# Adding MPLAB X bin directory to path.
PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
# Path to java used to run MPLAB X when this makefile was created
MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="C:\Program Files\Microchip\xc8\v2.41\bin\xc8-cc.exe"
# MP_CPPC is not defined
# MP_BC is not defined
MP_AS="C:\Program Files\Microchip\xc8\v2.41\bin\xc8-cc.exe"
MP_LD="C:\Program Files\Microchip\xc8\v2.41\bin\xc8-cc.exe"
MP_AR="C:\Program Files\Microchip\xc8\v2.41\bin\xc8-ar.exe"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="C:\Program Files\Microchip\xc8\v2.41\bin"
# MP_CPPC_DIR is not defined
# MP_BC_DIR is not defined
MP_AS_DIR="C:\Program Files\Microchip\xc8\v2.41\bin"
MP_LD_DIR="C:\Program Files\Microchip\xc8\v2.41\bin"
MP_AR_DIR="C:\Program Files\Microchip\xc8\v2.41\bin"
DFP_DIR=C:/Users/remi.heredero/.mchp_packs/Microchip/PIC18F-K_DFP/1.7.134

View File

@@ -0,0 +1,10 @@
#
# Generated - do not edit!
#
# NOCDDL
#
CND_BASEDIR=`pwd`
# default configuration
CND_ARTIFACT_DIR_default=dist/default/production
CND_ARTIFACT_NAME_default=306-controller_interface.X.production.hex
CND_ARTIFACT_PATH_default=dist/default/production/306-controller_interface.X.production.hex

File diff suppressed because it is too large Load Diff

View File

@@ -27,7 +27,7 @@ typedef struct Timer_ // timer structure
/*----------------------------------------------------------------------------*/
/* depending on usage, change MAXTIMER and MAXEVENT */
/*----------------------------------------------------------------------------*/
#define MAXTIMER 8 // number of timers in our system
#define MAXTIMER 15 // number of timers in our system
#define MAXEVENT 20 // number of events in our system
#define NULLTIMER 0 // no value for time

Binary file not shown.

View File

@@ -119,13 +119,13 @@ m1=evPoll\n[isAlive]</panel_attributes>
<id>Relation</id>
<coordinates>
<x>224</x>
<y>392</y>
<w>336</w>
<h>560</h>
<y>252</y>
<w>378</w>
<h>700</h>
</coordinates>
<panel_attributes>lt=-&gt;
m1=evBorn</panel_attributes>
<additional_attributes>180.0;340.0;180.0;380.0;10.0;380.0;10.0;10.0;90.0;10.0</additional_attributes>
m1=evResurrect</panel_attributes>
<additional_attributes>180.0;440.0;180.0;480.0;10.0;480.0;10.0;10.0;90.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="15.0.0">
<zoom_level>7</zoom_level>
<zoom_level>10</zoom_level>
<element>
<id>UMLClass</id>
<coordinates>
<x>105</x>
<y>77</y>
<w>301</w>
<h>126</h>
<x>80</x>
<y>100</y>
<w>430</w>
<h>180</h>
</coordinates>
<panel_attributes>CAN_INTERFACE
--
@@ -28,10 +28,10 @@ CAN_setSender(idSender: uint8_t): void</panel_attributes>
<element>
<id>UMLClass</id>
<coordinates>
<x>315</x>
<y>350</y>
<w>301</w>
<h>126</h>
<x>0</x>
<y>390</y>
<w>430</w>
<h>180</h>
</coordinates>
<panel_attributes>JOYSTICK
--
@@ -51,10 +51,33 @@ CAN_setSender(idSender: uint8_t): void</panel_attributes>
<element>
<id>UMLClass</id>
<coordinates>
<x>812</x>
<y>154</y>
<w>322</w>
<h>504</h>
<x>580</x>
<y>370</y>
<w>490</w>
<h>210</h>
</coordinates>
<panel_attributes>MEMORY_CST
--
+CM_processIncome(idSender: uint8_t, idMsg: uint8_t, data: uint32_t): void
+CM_CONTROLLER_ALIVE(p: void*): void
+CM_JOY_SETUP(p: void*): void
+CM_DISPLAY_SETUP(p: void*): void
+CM_DISPLAY_SPEED(p: void*): void
+CM_DISPLAY_DIRECTION(p: void*): void
+CM_DRIVE_SETUP(p: void*): void
+CM_DRIVE_POWER(p: void*): void
+CM_STEERING_SETUP(p: void*): void
+CM_STEERING_SET(p: void*): void
+CM_SUPPLY_SETUP(p: void*): void</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>1140</x>
<y>40</y>
<w>460</w>
<h>720</h>
</coordinates>
<panel_attributes>MEMORY_CST
--

BIN
UML/drive.pdf Normal file

Binary file not shown.

137
UML/drive.uxf Normal file
View File

@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="15.0.0">
<zoom_level>15</zoom_level>
<element>
<id>Relation</id>
<coordinates>
<x>660</x>
<y>90</y>
<w>210</w>
<h>120</h>
</coordinates>
<panel_attributes>lt=-&gt;
evInit
/startAliveChecker
</panel_attributes>
<additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>660</x>
<y>75</y>
<w>30</w>
<h>30</h>
</coordinates>
<panel_attributes>type=initial</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLState</id>
<coordinates>
<x>540</x>
<y>405</y>
<w>270</w>
<h>105</h>
</coordinates>
<panel_attributes>RUN
--
/entry: LED ON
--
emitPollTorqueEv</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>735</x>
<y>450</y>
<w>195</w>
<h>270</h>
</coordinates>
<panel_attributes>lt=-&gt;
m1= evPollTorque\n/sendTorque
</panel_attributes>
<additional_attributes>10.0;100.0;10.0;160.0;110.0;160.0;110.0;10.0;50.0;10.0</additional_attributes>
</element>
<element>
<id>UMLState</id>
<coordinates>
<x>495</x>
<y>180</y>
<w>360</w>
<h>135</h>
</coordinates>
<panel_attributes>WAIT
--
ALIVE_emitBorn(ALjoy(), 0, 0);
ALIVE_emitReady(ALjoy(), 100, 0);
setAliveTime</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>660</x>
<y>300</y>
<w>120</w>
<h>135</h>
</coordinates>
<panel_attributes>lt=-&gt;
m1=evStart\n(onWait)
</panel_attributes>
<additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>735</x>
<y>450</y>
<w>195</w>
<h>180</h>
</coordinates>
<panel_attributes>lt=-&gt;
m1= evPollSpeed\n/sendSpeed
</panel_attributes>
<additional_attributes>10.0;40.0;10.0;100.0;110.0;100.0;110.0;10.0;50.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>390</x>
<y>240</y>
<w>345</w>
<h>555</h>
</coordinates>
<panel_attributes>lt=-&gt;
m1= evResurrect\n(onBorn)
</panel_attributes>
<additional_attributes>130.0;300.0;130.0;350.0;10.0;350.0;10.0;10.0;70.0;10.0</additional_attributes>
</element>
<element>
<id>UMLState</id>
<coordinates>
<x>450</x>
<y>600</y>
<w>270</w>
<h>90</h>
</coordinates>
<panel_attributes>DEAD
--
/entry: LED OFF</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>570</x>
<y>495</y>
<w>135</w>
<h>135</h>
</coordinates>
<panel_attributes>lt=-&gt;
m1=evStop\n(onDead)
</panel_attributes>
<additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
</element>
</diagram>

View File

@@ -9,7 +9,7 @@
<IsLogFilterLINEnabled>FALSE</IsLogFilterLINEnabled>
<IsLoggingEnabled>FALSE</IsLoggingEnabled>
<IsMsgIntepretationEnabled>TRUE</IsMsgIntepretationEnabled>
<IsOverWriteEnabled>FALSE</IsOverWriteEnabled>
<IsOverWriteEnabled>TRUE</IsOverWriteEnabled>
<DisplayTimeMode>SYSTEM</DisplayTimeMode>
<DisplayNumericMode>FALSE</DisplayNumericMode>
<LogOnConnect_CAN>FALSE</LogOnConnect_CAN>
@@ -17,7 +17,7 @@
<LogOnConnect_LIN>FALSE</LogOnConnect_LIN>
<Window_Position>
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>SHOWNORMAL</WindowPlacement>
<WindowPlacement>HIDE</WindowPlacement>
<Top>655</Top>
<Left>0</Left>
<Bottom>874</Bottom>
@@ -43,33 +43,19 @@
<IsVisible>1</IsVisible>
</COLUMN>
</CAN_Statistics>
<LIN_Statistics>
<COLUMN>
<ID>Parameter</ID>
<Order>1</Order>
<Width>200</Width>
<IsVisible>1</IsVisible>
</COLUMN>
<COLUMN>
<ID>Channel 1</ID>
<Order>2</Order>
<Width>90</Width>
<IsVisible>1</IsVisible>
</COLUMN>
</LIN_Statistics>
<Window_Position>
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
<Top>388</Top>
<Left>612</Left>
<Bottom>1002</Bottom>
<Right>1034</Right>
<Top>517</Top>
<Left>489</Left>
<Bottom>1014</Bottom>
<Right>911</Right>
</Window_Position>
</Bus_Statistics>
<J1939_Database_Files/>
<CAN_DIL_Section>
<DriverName>MHS Tiny-CAN</DriverName>
<ControllerMode>Bus Off</ControllerMode>
<ControllerMode>Unknown</ControllerMode>
<ControllerSettings>
<Channel>
<BaudRate>250</BaudRate>
@@ -124,50 +110,6 @@
</ControllerSettings>
</CAN_DIL_Section>
<CAN_Filters>
<Filter>
<Name>notAlive</Name>
<Type>STOP</Type>
<FilterMessage>
<IdFrom>271</IdFrom>
<IdTo>271</IdTo>
<Direction>Rx</Direction>
<IDType>STD</IDType>
<MsgType>NONRTR</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>799</IdFrom>
<IdTo>799</IdTo>
<Direction>ALL</Direction>
<IDType>STD</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>543</IdFrom>
<IdTo>543</IdTo>
<Direction>ALL</Direction>
<IDType>STD</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>1055</IdFrom>
<IdTo>1055</IdTo>
<Direction>ALL</Direction>
<IDType>STD</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>1311</IdFrom>
<IdTo>1311</IdTo>
<Direction>ALL</Direction>
<IDType>STD</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
</Filter>
<Filter>
<Name>display</Name>
<Type>PASS</Type>
@@ -175,7 +117,7 @@
<IdFrom>306</IdFrom>
<IdTo>306</IdTo>
<Direction>ALL</Direction>
<IDType>STD</IDType>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
@@ -187,6 +129,14 @@
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>48</IdFrom>
<IdTo>48</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>799</IdFrom>
<IdTo>799</IdTo>
@@ -239,6 +189,78 @@
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>1040</IdFrom>
<IdTo>1040</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>1055</IdFrom>
<IdTo>1055</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
</Filter>
<Filter>
<Name>joy</Name>
<Type>PASS</Type>
<FilterMessage>
<IdFrom>288</IdFrom>
<IdTo>288</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>529</IdFrom>
<IdTo>529</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>543</IdFrom>
<IdTo>543</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
</Filter>
<Filter>
<Name>noAlive</Name>
<Type>STOP</Type>
<FilterMessage>
<IdFrom>271</IdFrom>
<IdTo>271</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>543</IdFrom>
<IdTo>543</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>799</IdFrom>
<IdTo>799</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>1055</IdFrom>
<IdTo>1055</IdTo>
@@ -248,8 +270,8 @@
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>1040</IdFrom>
<IdTo>1040</IdTo>
<IdFrom>1311</IdFrom>
<IdTo>1311</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
@@ -300,105 +322,31 @@
<Channel>0</Channel>
</FilterMessage>
</Filter>
<Filter>
<Name>joy</Name>
<Type>PASS</Type>
<FilterMessage>
<IdFrom>288</IdFrom>
<IdTo>288</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>529</IdFrom>
<IdTo>529</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>543</IdFrom>
<IdTo>543</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
</Filter>
<Filter>
<Name>controller</Name>
<Type>PASS</Type>
<FilterMessage>
<IdFrom>16</IdFrom>
<IdTo>16</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>271</IdFrom>
<IdTo>271</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>17</IdFrom>
<IdTo>17</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>18</IdFrom>
<IdTo>18</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>19</IdFrom>
<IdTo>19</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>20</IdFrom>
<IdTo>20</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
<FilterMessage>
<IdFrom>22</IdFrom>
<IdTo>22</IdTo>
<Direction>ALL</Direction>
<IDType>ALL</IDType>
<MsgType>ALL</MsgType>
<Channel>0</Channel>
</FilterMessage>
</Filter>
</CAN_Filters>
<CAN_Signal_Watch>
<Message>
<Id>337</Id>
<Signal>SteeringPosition</Signal>
<Id>529</Id>
<Signal>posY</Signal>
<Signal>button</Signal>
<Signal>posX</Signal>
</Message>
<Message>
<Id>1040</Id>
<Signal>Speed</Signal>
</Message>
<Message>
<Id>321</Id>
<Signal>Power</Signal>
</Message>
<Message>
<Id>306</Id>
<Signal>Vehiclespeed</Signal>
</Message>
<Message>
<Id>336</Id>
<Signal>SET_CENTER</Signal>
<Signal>HOMING</Signal>
<Signal>RESET</Signal>
<Signal>SET_CENTER</Signal>
<Signal>ALIVE_TIME</Signal>
</Message>
<Message>
@@ -412,15 +360,15 @@
<Window_Position>
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>HIDE</WindowPlacement>
<Top>157</Top>
<Left>596</Left>
<Right>1086</Right>
<Bottom>387</Bottom>
<Top>165</Top>
<Left>599</Left>
<Right>1089</Right>
<Bottom>452</Bottom>
</Window_Position>
<COLUMN_WIDTH>
<MESSAGE_COLUMN>94</MESSAGE_COLUMN>
<Raw_Val_Column>178</Raw_Val_Column>
<Physical_Val_Column>189</Physical_Val_Column>
<MESSAGE_COLUMN>147</MESSAGE_COLUMN>
<Raw_Val_Column>94</Raw_Val_Column>
<Physical_Val_Column>139</Physical_Val_Column>
<Signal_Column>94</Signal_Column>
</COLUMN_WIDTH>
</CAN_Signal_Watch>
@@ -434,10 +382,10 @@
<Bottom>300</Bottom>
</Window_Position>
<COLUMN_WIDTH>
<MESSAGE_COLUMN>87</MESSAGE_COLUMN>
<Raw_Val_Column>87</Raw_Val_Column>
<Physical_Val_Column>174</Physical_Val_Column>
<Signal_Column>87</Signal_Column>
<MESSAGE_COLUMN>94</MESSAGE_COLUMN>
<Raw_Val_Column>94</Raw_Val_Column>
<Physical_Val_Column>189</Physical_Val_Column>
<Signal_Column>94</Signal_Column>
</COLUMN_WIDTH>
</J1939_Signal_Watch>
<LIN_Signal_Watch>
@@ -450,10 +398,10 @@
<Bottom>300</Bottom>
</Window_Position>
<COLUMN_WIDTH>
<MESSAGE_COLUMN>87</MESSAGE_COLUMN>
<Raw_Val_Column>87</Raw_Val_Column>
<Physical_Val_Column>174</Physical_Val_Column>
<Signal_Column>87</Signal_Column>
<MESSAGE_COLUMN>94</MESSAGE_COLUMN>
<Raw_Val_Column>94</Raw_Val_Column>
<Physical_Val_Column>189</Physical_Val_Column>
<Signal_Column>94</Signal_Column>
</COLUMN_WIDTH>
</LIN_Signal_Watch>
<CAN_Signal_Graph>
@@ -472,28 +420,42 @@
<Show_Grid>TRUE</Show_Grid>
<Display_Type>NORMAL</Display_Type>
</GRAPH_PARAMETERS>
<GRAPH_ELEMENT>
<Message_ID>321</Message_ID>
<Message_Name>DRIVE_POWER</Message_Name>
<Frame_Format/>
<Element_Name>Power</Element_Name>
<Value_Type>Physical</Value_Type>
<Line_Type>SOLID</Line_Type>
<Line_Color>16711680</Line_Color>
<Point_Type>1</Point_Type>
<Point_Color>8388736</Point_Color>
<Visibility>TRUE</Visibility>
<Enable>TRUE</Enable>
<Display_Type>NORMAL</Display_Type>
</GRAPH_ELEMENT>
<Window_Position>
<Visibility>HIDE</Visibility>
<Window_Position>HIDE</Window_Position>
<Top>-1</Top>
<Left>0</Left>
<Bottom>0</Bottom>
<Right>0</Right>
<Visibility>SHOWNORMAL</Visibility>
<Window_Position>SHOWNORMAL</Window_Position>
<Top>291</Top>
<Left>205</Left>
<Bottom>957</Bottom>
<Right>1530</Right>
</Window_Position>
<Splitter_Window_Col_0>
<CxIdeal>-1</CxIdeal>
<CxIdeal>479</CxIdeal>
<CxMin>0</CxMin>
</Splitter_Window_Col_0>
<Splitter_Window_Col_1>
<CxIdeal>0</CxIdeal>
<CxIdeal>819</CxIdeal>
<CxMin>0</CxMin>
</Splitter_Window_Col_1>
<Splitter_Window_Row_0>
<CxIdeal>0</CxIdeal>
<CxIdeal>308</CxIdeal>
<CxMin>0</CxMin>
</Splitter_Window_Row_0>
<Splitter_Window_Row_1>
<CxIdeal>0</CxIdeal>
<CxIdeal>308</CxIdeal>
<CxMin>0</CxMin>
</Splitter_Window_Row_1>
</CAN_Signal_Graph>
@@ -528,26 +490,29 @@
</J1939_Simulated_Systems>
<CAN_Replay/>
<CAN_Message_Window>
<Append_Buffer_Size>2025155376</Append_Buffer_Size>
<Overwrite_Buffer_Size>24800128</Overwrite_Buffer_Size>
<Display_Update_Time>2025155348</Display_Update_Time>
<Filter IsEnabled="0">notAlive</Filter>
<Append_Buffer_Size>1489464112</Append_Buffer_Size>
<Overwrite_Buffer_Size>26186104</Overwrite_Buffer_Size>
<Display_Update_Time>1489464084</Display_Update_Time>
<Filter IsEnabled="0">display</Filter>
<Filter IsEnabled="0">drive</Filter>
<Filter IsEnabled="0">joy</Filter>
<Filter IsEnabled="1">noAlive</Filter>
<Filter IsEnabled="0">steering</Filter>
<COLUMN>
<ID/>
<Order>1</Order>
<IsVisible>0</IsVisible>
<Width>0</Width>
<Order>5</Order>
<IsVisible>1</IsVisible>
<Width>19</Width>
</COLUMN>
<COLUMN>
<ID>Time</ID>
<Order>5</Order>
<Order>4</Order>
<IsVisible>1</IsVisible>
<Width>129</Width>
</COLUMN>
<COLUMN>
<ID>Tx/Rx</ID>
<Order>4</Order>
<Order>1</Order>
<IsVisible>1</IsVisible>
<Width>53</Width>
</COLUMN>
@@ -585,15 +550,15 @@
<ID>Data Byte(s)</ID>
<Order>9</Order>
<IsVisible>1</IsVisible>
<Width>158</Width>
<Width>139</Width>
</COLUMN>
<IsHex>1</IsHex>
<IsAppend>1</IsAppend>
<IsInterpret>0</IsInterpret>
<IsAppend>0</IsAppend>
<IsInterpret>1</IsInterpret>
<Time_Mode>SYSTEM</Time_Mode>
<Window_Position>
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
<WindowPlacement>SETMINPOSITION</WindowPlacement>
<Top>0</Top>
<Left>0</Left>
<Bottom>810</Bottom>
@@ -688,12 +653,12 @@
<Width>720</Width>
</COLUMN>
<IsHex>1</IsHex>
<IsAppend>0</IsAppend>
<IsAppend>1</IsAppend>
<IsInterpret>0</IsInterpret>
<Time_Mode>SYSTEM</Time_Mode>
<Window_Position>
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
<WindowPlacement>SETMINPOSITION</WindowPlacement>
<Top>0</Top>
<Left>0</Left>
<Bottom>549</Bottom>
@@ -773,12 +738,12 @@
<Width>734</Width>
</COLUMN>
<IsHex>1</IsHex>
<IsAppend>0</IsAppend>
<IsAppend>1</IsAppend>
<IsInterpret>0</IsInterpret>
<Time_Mode>SYSTEM</Time_Mode>
<Window_Position>
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
<WindowPlacement>SETMINPOSITION</WindowPlacement>
<Top>0</Top>
<Left>0</Left>
<Bottom>549</Bottom>
@@ -798,11 +763,83 @@
<Visibility>SHOWNORMAL</Visibility>
<WindowPlacement>SETMINPOSITION</WindowPlacement>
<Top>3</Top>
<Left>1055</Left>
<Left>1052</Left>
<Bottom>658</Bottom>
<Right>1915</Right>
<Right>1912</Right>
</Window_Position>
<Message_List>
<Message>
<Channel>1</Channel>
<Message_ID>16</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,0,0,10</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>17</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,0,0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>18</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,0,0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>19</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,0,0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>20</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>2</DLC>
<DataBytes>0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>21</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,0,0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>22</Message_ID>
@@ -815,66 +852,6 @@
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>16</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,0,0,50</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>306</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>2</DLC>
<DataBytes>0,100</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>336</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>1,0,0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>336</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,1,0,0</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
<Message>
<Channel>1</Channel>
<Message_ID>337</Message_ID>
<IsExtended>FALSE</IsExtended>
<IsRtr>FALSE</IsRtr>
<DLC>4</DLC>
<DataBytes>0,1,134,160</DataBytes>
<Repetion>10</Repetion>
<Repetition_Enabled>FALSE</Repetition_Enabled>
<Key_Value>a</Key_Value>
<Key_Enabled>FALSE</Key_Enabled>
</Message>
</Message_List>
</CAN_Tx_Window>
<CAN_Wave_Form_Genarator>

View File

@@ -6,7 +6,7 @@
[BUSMASTER_VERSION] [3.2.2]
[NUMBER_OF_MESSAGES] 26
[NUMBER_OF_MESSAGES] 29
[START_MSG] JOY_MEASURE,529,3,3,1,S
[START_SIGNALS] posX,8,1,0,I,127,-128,1,0.000000,1.000000,%,
@@ -72,7 +72,7 @@
[VALUE_DESCRIPTION] No alive message,0
[END_MSG]
[START_MSG] DISPLAY_SETUP,48,4,1,1,S
[START_MSG] DISPLAY_SETUP,304,4,1,1,S
[START_SIGNALS] AliveTime,8,4,0,U,255,0,1,0.000000,10.000000,ms,
[END_MSG]
@@ -158,4 +158,22 @@
[START_SIGNALS] timeMeasureOrDeltaX,8,2,0,U,255,0,1,0.000000,10.000000,msOrVal,
[START_SIGNALS] DeltaY,8,3,0,U,255,0,1,0.000000,1.000000,val,
[START_SIGNALS] aliveTime,8,4,0,U,255,0,1,0.000000,10.000000,ms,
[END_MSG]
[START_MSG] CONTROL_SETUP_DRIVE,23,4,3,1,S
[START_SIGNALS] driveAliveTime,8,1,0,U,255,0,1,0.000000,10.000000,ms,
[START_SIGNALS] driveSpeedTime,8,2,0,U,255,0,1,0.000000,10.000000,ms,
[START_SIGNALS] driveStopTime,8,3,0,U,255,0,1,0.000000,10.000000,ms,
[END_MSG]
[START_MSG] CONTROL_SETUP_PARAM_BATTERY,24,4,4,1,S
[START_SIGNALS] batteryVoltTime,8,1,0,U,255,0,1,0.000000,10.000000,ms,
[START_SIGNALS] batteryCurentTime,8,2,0,U,255,0,1,0.000000,10.000000,ms,
[START_SIGNALS] batteryEnergyTime,8,3,0,U,255,0,1,0.000000,10.000000,ms,
[START_SIGNALS] batteryAliveTime,8,4,0,U,255,0,1,0.000000,10.000000,ms,
[END_MSG]
[START_MSG] CONTROL_SETUP_PARAM,21,4,2,1,S
[START_SIGNALS] displayAliveTime,8,1,0,U,255,0,1,0.000000,10.000000,ms,
[START_SIGNALS] steeringAliveTime,8,2,0,U,255,0,1,0.000000,10.000000,ms,
[END_MSG]