Merge pull request #4 from SummerSchool2023-RED/feature/watchdog-alive
Feature/watchdog alive
This commit is contained in:
commit
4d025d7ac4
99
306-controller_interface.X/app/can_message.c
Normal file
99
306-controller_interface.X/app/can_message.c
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
/**
|
||||||
|
* @author Rémi Heredero
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date August 2023
|
||||||
|
* @file can_message.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../middleware/can_interface.h"
|
||||||
|
#include "car.h"
|
||||||
|
#include "../app/factory/factory.h"
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
struct {
|
||||||
|
uint8_t byte0;
|
||||||
|
uint8_t byte1;
|
||||||
|
uint8_t byte2;
|
||||||
|
uint8_t byte3;
|
||||||
|
} separate;
|
||||||
|
struct {
|
||||||
|
uint32_t bytes;
|
||||||
|
} full;
|
||||||
|
} BYTES_4;
|
||||||
|
|
||||||
|
void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){
|
||||||
|
switch(idSender){
|
||||||
|
case 0: // Broadcast / Debug
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: // Joystick
|
||||||
|
if(idMsg == 0x1) { // JOY_MESURE
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(idMsg == 0xF) { // JOY_ALIVE
|
||||||
|
ALIVE_CHECKER_ISALIVE(ACjoy());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: // Display
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: // Drive
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: // Steering
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6: // Supply
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7: // Undefined
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_CONTROLLER_ALIVE(void* p) {
|
||||||
|
CAN_Send(0x0, 0xF, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_JOY_SETUP(void* p) {
|
||||||
|
BYTES_4 joy;
|
||||||
|
joy.separate.byte0 = CAR_CST.JOYSTICK_MODE;
|
||||||
|
joy.separate.byte1 = CAR_CST.JOYSTICK_PARAM1;
|
||||||
|
joy.separate.byte2 = CAR_CST.JOYSTICK_PARAM2;
|
||||||
|
joy.separate.byte3 = CAR_CST.JOYSTICK_ALIVE_TIME;
|
||||||
|
CAN_Send(2, 0, joy.full.bytes);
|
||||||
|
|
||||||
|
}
|
||||||
|
void CM_DISPLAY_SETUP(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_DISPLAY_SPEED(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_DISPLAY_DIRECTION(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_DRIVE_SETUP(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_DRIVE_POWER(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_STEERING_SETUP(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_STEERING_SET(void* p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CM_SETUP_CONTROL(void* p) {
|
||||||
|
|
||||||
|
}
|
40
306-controller_interface.X/app/can_message.h
Normal file
40
306-controller_interface.X/app/can_message.h
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* @author Rémi Heredero
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date August 2023
|
||||||
|
* @file can_message.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CAN_MESSAGE_H
|
||||||
|
#define CAN_MESSAGE_H
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
S R M
|
||||||
|
1 0 F CONTROL_ALIVE - - - -
|
||||||
|
1 2 0 JOY_SETUP Mode Param1 Param2 aliveTime
|
||||||
|
1 3 0 DISPLAY_SETUP reset - - aliveTime
|
||||||
|
1 3 2 DISPLAY_SPEED valH valL - -
|
||||||
|
1 3 3 DISPLAY_DIRECTION direction - - -
|
||||||
|
1 4 0 DRIVE_SETUP Reset/init speedTime stopTime aliveTime
|
||||||
|
1 4 1 DRIVE_POWER valH valL - -
|
||||||
|
1 5 0 STEERING_SETUP Reset/init homing setCenter aliveTime
|
||||||
|
1 5 1 STEERING_SET valHH valH valL valLL
|
||||||
|
1 6 0 SETUP_CONTROL batteryVoltTime batteryCurrentTime batteryEnergyTime aliveTime
|
||||||
|
*/
|
||||||
|
|
||||||
|
void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data);
|
||||||
|
void CM_CONTROLLER_ALIVE(void* p);
|
||||||
|
void CM_JOY_SETUP(void* p);
|
||||||
|
void CM_DISPLAY_SETUP(void* p);
|
||||||
|
void CM_DISPLAY_SPEED(void* p);
|
||||||
|
void CM_DISPLAY_DIRECTION(void* p);
|
||||||
|
void CM_DRIVE_SETUP(void* p);
|
||||||
|
void CM_DRIVE_POWER(void* p);
|
||||||
|
void CM_STEERING_SETUP(void* p);
|
||||||
|
void CM_STEERING_SET(void* p);
|
||||||
|
void CM_SETUP_CONTROL(void* p);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* CAN_MESSAGE_H */
|
||||||
|
|
@ -23,20 +23,23 @@
|
|||||||
/*******************
|
/*******************
|
||||||
* MEMORY ADRESSES *
|
* MEMORY ADRESSES *
|
||||||
*******************/
|
*******************/
|
||||||
#define MEMADD_CONTROL_STEERING_MODE 0x00
|
#define MEMADD_CONTROL_STEERING_MODE 0x01
|
||||||
#define MEMADD_CONTROL_ALIVE_TIME 0x01
|
#define MEMADD_CONTROL_ALIVE_TIME 0x02
|
||||||
#define MEMADD_CONTROL_SPEED_FACTOR 0x02
|
#define MEMADD_CONTROL_SPEED_FACTOR 0x03
|
||||||
#define MEMADD_CONTROL_POWER_FACTOR 0x06
|
#define MEMADD_CONTROL_POWER_FACTOR 0x07
|
||||||
#define MEMADD_CONTROL_STEERING_FACTOR 0x0A
|
#define MEMADD_CONTROL_STEERING_FACTOR 0x0B
|
||||||
#define MEMADD_CONTROL_MAX_SPEED_FW 0x0E
|
#define MEMADD_CONTROL_MAX_SPEED_FW 0x0F
|
||||||
#define MEMADD_CONTROL_MAX_SPEED_BW 0x0F
|
#define MEMADD_CONTROL_MAX_SPEED_BW 0x10
|
||||||
#define MEMADD_JOYSTICK_ALIVE_TIME 0x10
|
#define MEMADD_JOYSTICK_MODE 0x11
|
||||||
#define MEMADD_DISPLAY_ALIVE_TIME 0x11
|
#define MEMADD_JOYSTICK_PARAM1 0x12
|
||||||
#define MEMADD_DRIVE_SPEED_TIME 0x12
|
#define MEMADD_JOYSTICK_PARAM2 0x13
|
||||||
#define MEMADD_DRIVE_STOP_TIME 0x13
|
#define MEMADD_JOYSTICK_ALIVE_TIME 0x14
|
||||||
#define MEMADD_DRIVE_ALIVE_TIME 0x14
|
#define MEMADD_DISPLAY_ALIVE_TIME 0x
|
||||||
#define MEMADD_STEERING_ALIVE_TIME 0x15
|
#define MEMADD_DRIVE_SPEED_TIME 0x
|
||||||
#define MEMADD_BATTERY_ALIVE_TIME 0x16
|
#define MEMADD_DRIVE_STOP_TIME 0x
|
||||||
|
#define MEMADD_DRIVE_ALIVE_TIME 0x
|
||||||
|
#define MEMADD_STEERING_ALIVE_TIME 0x
|
||||||
|
#define MEMADD_BATTERY_ALIVE_TIME 0x
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t CONTROL_STEERING_MODE;
|
uint8_t CONTROL_STEERING_MODE;
|
||||||
@ -46,6 +49,10 @@ typedef struct {
|
|||||||
uint32_t CONTROL_STEERING_FACTOR;
|
uint32_t CONTROL_STEERING_FACTOR;
|
||||||
uint8_t CONTROL_MAX_SPEED_FW;
|
uint8_t CONTROL_MAX_SPEED_FW;
|
||||||
uint8_t CONTROL_MAX_SPEED_BW;
|
uint8_t CONTROL_MAX_SPEED_BW;
|
||||||
|
|
||||||
|
uint8_t JOYSTICK_MODE;
|
||||||
|
uint8_t JOYSTICK_PARAM1;
|
||||||
|
uint8_t JOYSTICK_PARAM2;
|
||||||
uint8_t JOYSTICK_ALIVE_TIME;
|
uint8_t JOYSTICK_ALIVE_TIME;
|
||||||
uint8_t DISPLAY_ALIVE_TIME;
|
uint8_t DISPLAY_ALIVE_TIME;
|
||||||
uint8_t DRIVE_SPEED_TIME;
|
uint8_t DRIVE_SPEED_TIME;
|
||||||
|
@ -30,6 +30,14 @@ LED* l8() {
|
|||||||
return &theFactory.l8_;
|
return &theFactory.l8_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WATCHDOG* WDcontroller(){
|
||||||
|
return &theFactory.WDcontroller_;
|
||||||
|
}
|
||||||
|
|
||||||
|
ALIVE_CHECKER* ACjoy() {
|
||||||
|
return &theFactory.ACjoy_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//initialize all objects
|
//initialize all objects
|
||||||
void Factory_init() {
|
void Factory_init() {
|
||||||
@ -54,24 +62,41 @@ void Factory_init() {
|
|||||||
CAN_init();
|
CAN_init();
|
||||||
CAN_setSender(1);
|
CAN_setSender(1);
|
||||||
LED_off(l1());
|
LED_off(l1());
|
||||||
}
|
|
||||||
|
|
||||||
void foo(uint8_t a, uint8_t b, uint32_t c){
|
// TODO init EPROM interface
|
||||||
if(b){
|
|
||||||
LED_on(l1());
|
// TODO init watchdog with EPROM CST
|
||||||
} else {
|
WATCHDOG_init(WDcontroller());
|
||||||
LED_off(l1());
|
CAR_CST.CONTROL_ALIVE_TIME = 100;
|
||||||
}
|
WATCHDOG_setTime(WDcontroller(), CAR_CST.CONTROL_ALIVE_TIME);
|
||||||
CAN_Send(a, b, c);
|
|
||||||
|
// TODO init ALIVE CHECKER with EPROM CST
|
||||||
|
CAR_CST.JOYSTICK_MODE = 0;
|
||||||
|
CAR_CST.JOYSTICK_PARAM1 = 100;
|
||||||
|
CAR_CST.JOYSTICK_PARAM2 = 1;
|
||||||
|
CAR_CST.JOYSTICK_ALIVE_TIME = 10;
|
||||||
|
ALIVE_CHECKER_init(ACjoy());
|
||||||
}
|
}
|
||||||
|
|
||||||
//connect objects if required
|
//connect objects if required
|
||||||
void Factory_build() {
|
void Factory_build() {
|
||||||
ECAN_SetRXBnInterruptHandler(CAN_newMsg);
|
ECAN_SetRXBnInterruptHandler(CAN_newMsg);
|
||||||
CAN_onReceiveCan(foo);
|
CAN_onReceiveCan(CM_processIncome);
|
||||||
|
|
||||||
|
WATCHDOG_onAlive(WDcontroller(), CM_CONTROLLER_ALIVE, NULL);
|
||||||
|
ALIVE_CHECKER_onSetup(ACjoy(), CM_JOY_SETUP, NULL);
|
||||||
|
ALIVE_CHECKER_setAliveTime(ACjoy(), CAR_CST.JOYSTICK_ALIVE_TIME);
|
||||||
|
ALIVE_CHECKER_onBorn(ACjoy(), LED_on, l1());
|
||||||
|
ALIVE_CHECKER_onDead(ACjoy(), LED_off, l1());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//start all state machines
|
//start all state machines
|
||||||
void Factory_start() {
|
void Factory_start() {
|
||||||
CAN_startBehaviour();
|
CAN_startBehaviour();
|
||||||
|
WATCHDOG_startBehaviour(WDcontroller());
|
||||||
|
ALIVE_CHECKER_startBehaviour(ACjoy());
|
||||||
|
ALIVE_CHECKER_emitBorn(ACjoy(), 100, 0);
|
||||||
|
ALIVE_CHECKER_emitReady(ACjoy(), 200, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -12,9 +12,13 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "../car.h"
|
||||||
|
#include "../can_message.h"
|
||||||
#include "../../board/led/led.h"
|
#include "../../board/led/led.h"
|
||||||
#include "../../board/button/button.h"
|
#include "../../board/button/button.h"
|
||||||
|
#include "../../middleware/alive_checker.h"
|
||||||
#include "../../middleware/can_interface.h"
|
#include "../../middleware/can_interface.h"
|
||||||
|
#include "../../middleware/watchdog.h"
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -27,6 +31,9 @@ typedef struct {
|
|||||||
LED l7_;
|
LED l7_;
|
||||||
LED l8_;
|
LED l8_;
|
||||||
|
|
||||||
|
WATCHDOG WDcontroller_;
|
||||||
|
ALIVE_CHECKER ACjoy_;
|
||||||
|
|
||||||
} Factory;
|
} Factory;
|
||||||
|
|
||||||
|
|
||||||
@ -44,5 +51,8 @@ LED* l6();
|
|||||||
LED* l7();
|
LED* l7();
|
||||||
LED* l8();
|
LED* l8();
|
||||||
|
|
||||||
|
WATCHDOG* WDcontroller();
|
||||||
|
ALIVE_CHECKER* ACjoy();
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -56,6 +56,7 @@ bool ALIVE_CHECKER_processEvent(Event* ev) {
|
|||||||
} else {
|
} else {
|
||||||
me->state = STAC_DEAD;
|
me->state = STAC_DEAD;
|
||||||
}
|
}
|
||||||
|
me->isAlive = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -101,7 +102,6 @@ bool ALIVE_CHECKER_processEvent(Event* ev) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case STAC_WAIT:
|
case STAC_WAIT:
|
||||||
me->isAlive = false;
|
|
||||||
if (me->wait.f != NULL) {
|
if (me->wait.f != NULL) {
|
||||||
me->wait.f(me->wait.p);
|
me->wait.f(me->wait.p);
|
||||||
}
|
}
|
||||||
@ -168,7 +168,7 @@ void ALIVE_CHECKER_setAliveTime(ALIVE_CHECKER* me, uint8_t v) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ALIVE_CHECKER_setIsAlive(ALIVE_CHECKER* me, bool v) {
|
void ALIVE_CHECKER_setIsAlive(ALIVE_CHECKER* me, bool v) {
|
||||||
me->aliveTime = v;
|
me->isAlive = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ALIVE_CHECKER_ISALIVE(ALIVE_CHECKER* me) {
|
void ALIVE_CHECKER_ISALIVE(ALIVE_CHECKER* me) {
|
||||||
|
@ -92,13 +92,13 @@ bool CAN_processEvent(Event* ev) {
|
|||||||
canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B; // standard
|
canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B; // standard
|
||||||
canMsg.frame.dlc = 4; // 4 bytes to send
|
canMsg.frame.dlc = 4; // 4 bytes to send
|
||||||
canMsg.frame.rtr = 0; // no remote frame
|
canMsg.frame.rtr = 0; // no remote frame
|
||||||
canMsg.frame.data3 = (uint8_t) data;
|
canMsg.frame.data0 = (uint8_t) data;
|
||||||
data = data >> 8;
|
|
||||||
canMsg.frame.data2 = (uint8_t) data;
|
|
||||||
data = data >> 8;
|
data = data >> 8;
|
||||||
canMsg.frame.data1 = (uint8_t) data;
|
canMsg.frame.data1 = (uint8_t) data;
|
||||||
data = data >> 8;
|
data = data >> 8;
|
||||||
canMsg.frame.data0 = (uint8_t) data;
|
canMsg.frame.data2 = (uint8_t) data;
|
||||||
|
data = data >> 8;
|
||||||
|
canMsg.frame.data3 = (uint8_t) data;
|
||||||
data = data >> 8;
|
data = data >> 8;
|
||||||
canMsg.frame.id = (uint32_t) data;
|
canMsg.frame.id = (uint32_t) data;
|
||||||
CAN_transmit(&canMsg);
|
CAN_transmit(&canMsg);
|
||||||
|
90
306-controller_interface.X/middleware/watchdog.c
Normal file
90
306-controller_interface.X/middleware/watchdog.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/**
|
||||||
|
* @author Rémi Heredero
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date August 2023
|
||||||
|
* @file watchdog.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "watchdog.h"
|
||||||
|
|
||||||
|
void WATCHDOG_init(WATCHDOG* me){
|
||||||
|
me->state = STWD_INIT;
|
||||||
|
me->time = 10;
|
||||||
|
me->alive.f = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WATCHDOG_startBehaviour(WATCHDOG* me){
|
||||||
|
POST(me, &WATCHDOG_processEvent, evWDinit, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WATCHDOG_processEvent(Event* ev) {
|
||||||
|
bool processed = false;
|
||||||
|
WATCHDOG* me = (WATCHDOG*)Event_getTarget(ev);
|
||||||
|
WATCHDOG_STATES oldState = me->state;
|
||||||
|
evIDT evid = Event_getId(ev);
|
||||||
|
uint64_t data = Event_getData(ev);
|
||||||
|
|
||||||
|
switch (me->state) { // onState
|
||||||
|
case STWD_INIT:
|
||||||
|
if (ev->id == evWDinit) {
|
||||||
|
me->state = STWD_ALIVE;
|
||||||
|
WATCHDOG_emitPoll(me, 10*me->time, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STWD_ALIVE:
|
||||||
|
if (ev->id == evWDpoll) {
|
||||||
|
WATCHDOG_emitPoll(me, 10*me->time, 0);
|
||||||
|
if (me->alive.f != NULL) {
|
||||||
|
me->alive.f(me->alive.p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(oldState != me->state){
|
||||||
|
switch (oldState) { // onExit
|
||||||
|
case STWD_INIT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STWD_ALIVE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (me->state) { // onEntry
|
||||||
|
case STWD_INIT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STWD_ALIVE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
processed = true;
|
||||||
|
}
|
||||||
|
return processed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************
|
||||||
|
* Callbacks *
|
||||||
|
*************/
|
||||||
|
|
||||||
|
void WATCHDOG_onAlive(WATCHDOG* me, WATCHDOG_CALLBACK_FUNCTION f, void* p) {
|
||||||
|
me->alive.f = f;
|
||||||
|
me->alive.p = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/************
|
||||||
|
* EMITTERS *
|
||||||
|
************/
|
||||||
|
|
||||||
|
void WATCHDOG_emitPoll(WATCHDOG* me, uint16_t t, int64_t data) {
|
||||||
|
POST(me, &WATCHDOG_processEvent, evWDpoll, t, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********
|
||||||
|
* SETTERS *
|
||||||
|
***********/
|
||||||
|
|
||||||
|
void WATCHDOG_setTime(WATCHDOG* me, uint8_t v) {
|
||||||
|
me->time = v;
|
||||||
|
}
|
83
306-controller_interface.X/middleware/watchdog.h
Normal file
83
306-controller_interface.X/middleware/watchdog.h
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/**
|
||||||
|
* @author Rémi Heredero
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date August 2023
|
||||||
|
* @file watchdog.h
|
||||||
|
*/
|
||||||
|
#ifndef WATCHDOG_H
|
||||||
|
#define WATCHDOG_H
|
||||||
|
|
||||||
|
#include "../xf/xf.h"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
STWD_INIT,
|
||||||
|
STWD_ALIVE
|
||||||
|
} WATCHDOG_STATES;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
evWDinit = 20,
|
||||||
|
evWDpoll
|
||||||
|
} WATCHDOG_EVENTS;
|
||||||
|
|
||||||
|
typedef void (*WATCHDOG_CALLBACK_FUNCTION)(void*);
|
||||||
|
typedef struct {
|
||||||
|
WATCHDOG_CALLBACK_FUNCTION f; // function
|
||||||
|
void* p; // param(s)
|
||||||
|
} WATCHDOG_CALLBACK;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
WATCHDOG_STATES state;
|
||||||
|
uint8_t time;
|
||||||
|
WATCHDOG_CALLBACK alive;
|
||||||
|
} WATCHDOG;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the WATCHDOG
|
||||||
|
* @param me the WATCHDOG itself
|
||||||
|
*/
|
||||||
|
void WATCHDOG_init(WATCHDOG* me);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start the WATCHDOG state machine
|
||||||
|
* @param me the WATCHDOG itself
|
||||||
|
*/
|
||||||
|
void WATCHDOG_startBehaviour(WATCHDOG* me);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process the event
|
||||||
|
* @param ev the event to process
|
||||||
|
* @return true if the event is processed
|
||||||
|
*/
|
||||||
|
bool WATCHDOG_processEvent(Event* ev);
|
||||||
|
|
||||||
|
/*************
|
||||||
|
* Callbacks *
|
||||||
|
*************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the callback function to call when the WATCHDOG is entering state alive
|
||||||
|
* @param me the WATCHDOG itself
|
||||||
|
* @param f the function to call
|
||||||
|
* @param p the param(s) to pass to the function
|
||||||
|
*/
|
||||||
|
void WATCHDOG_onAlive(WATCHDOG* me, WATCHDOG_CALLBACK_FUNCTION f, void* p);
|
||||||
|
|
||||||
|
/************
|
||||||
|
* EMITTERS *
|
||||||
|
************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Emit the poll event
|
||||||
|
* @param me the WATCHDOG itself
|
||||||
|
* @param t time to wait in ms before triggering event
|
||||||
|
* @param data data to put on the event for XF
|
||||||
|
*/
|
||||||
|
void WATCHDOG_emitPoll(WATCHDOG* me, uint16_t t, int64_t data);
|
||||||
|
|
||||||
|
/***********
|
||||||
|
* SETTERS *
|
||||||
|
***********/
|
||||||
|
|
||||||
|
void WATCHDOG_setTime(WATCHDOG* me, uint8_t v);
|
||||||
|
|
||||||
|
#endif
|
@ -7,6 +7,7 @@
|
|||||||
<logicalFolder name="app" displayName="app" projectFiles="true">
|
<logicalFolder name="app" displayName="app" projectFiles="true">
|
||||||
<itemPath>app/factory/factory.h</itemPath>
|
<itemPath>app/factory/factory.h</itemPath>
|
||||||
<itemPath>app/car.h</itemPath>
|
<itemPath>app/car.h</itemPath>
|
||||||
|
<itemPath>app/can_message.h</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<logicalFolder name="board" displayName="board" projectFiles="true">
|
<logicalFolder name="board" displayName="board" projectFiles="true">
|
||||||
<itemPath>board/led/led.h</itemPath>
|
<itemPath>board/led/led.h</itemPath>
|
||||||
@ -25,6 +26,7 @@
|
|||||||
<logicalFolder name="middleware" displayName="middleware" projectFiles="true">
|
<logicalFolder name="middleware" displayName="middleware" projectFiles="true">
|
||||||
<itemPath>middleware/can_interface.h</itemPath>
|
<itemPath>middleware/can_interface.h</itemPath>
|
||||||
<itemPath>middleware/alive_checker.h</itemPath>
|
<itemPath>middleware/alive_checker.h</itemPath>
|
||||||
|
<itemPath>middleware/watchdog.h</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<logicalFolder name="xf" displayName="xf" projectFiles="true">
|
<logicalFolder name="xf" displayName="xf" projectFiles="true">
|
||||||
<itemPath>xf/event.h</itemPath>
|
<itemPath>xf/event.h</itemPath>
|
||||||
@ -41,6 +43,7 @@
|
|||||||
projectFiles="true">
|
projectFiles="true">
|
||||||
<logicalFolder name="app" displayName="app" projectFiles="true">
|
<logicalFolder name="app" displayName="app" projectFiles="true">
|
||||||
<itemPath>app/factory/factory.c</itemPath>
|
<itemPath>app/factory/factory.c</itemPath>
|
||||||
|
<itemPath>app/can_message.c</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<logicalFolder name="board" displayName="board" projectFiles="true">
|
<logicalFolder name="board" displayName="board" projectFiles="true">
|
||||||
<itemPath>board/led/led.c</itemPath>
|
<itemPath>board/led/led.c</itemPath>
|
||||||
@ -59,6 +62,7 @@
|
|||||||
<logicalFolder name="middleware" displayName="middleware" projectFiles="true">
|
<logicalFolder name="middleware" displayName="middleware" projectFiles="true">
|
||||||
<itemPath>middleware/can_interface.c</itemPath>
|
<itemPath>middleware/can_interface.c</itemPath>
|
||||||
<itemPath>middleware/alive_checker.c</itemPath>
|
<itemPath>middleware/alive_checker.c</itemPath>
|
||||||
|
<itemPath>middleware/watchdog.c</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<logicalFolder name="xf" displayName="xf" projectFiles="true">
|
<logicalFolder name="xf" displayName="xf" projectFiles="true">
|
||||||
<itemPath>xf/event.c</itemPath>
|
<itemPath>xf/event.c</itemPath>
|
||||||
@ -91,7 +95,7 @@
|
|||||||
<platform>3</platform>
|
<platform>3</platform>
|
||||||
</toolsSet>
|
</toolsSet>
|
||||||
<packs>
|
<packs>
|
||||||
<pack name="PIC18F-K_DFP" vendor="Microchip" version="1.5.114"/>
|
<pack name="PIC18F-K_DFP" vendor="Microchip" version="1.7.134"/>
|
||||||
</packs>
|
</packs>
|
||||||
<ScriptingSettings>
|
<ScriptingSettings>
|
||||||
</ScriptingSettings>
|
</ScriptingSettings>
|
||||||
@ -210,7 +214,6 @@
|
|||||||
<property key="debugoptions.debug-startup" value="Use system settings"/>
|
<property key="debugoptions.debug-startup" value="Use system settings"/>
|
||||||
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
|
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
|
||||||
<property key="debugoptions.useswbreakpoints" value="false"/>
|
<property key="debugoptions.useswbreakpoints" value="false"/>
|
||||||
<property key="firmware.download.all" value="false"/>
|
|
||||||
<property key="hwtoolclock.frcindebug" value="false"/>
|
<property key="hwtoolclock.frcindebug" value="false"/>
|
||||||
<property key="memories.aux" value="false"/>
|
<property key="memories.aux" value="false"/>
|
||||||
<property key="memories.bootflash" value="true"/>
|
<property key="memories.bootflash" value="true"/>
|
||||||
@ -296,12 +299,15 @@
|
|||||||
</XC8-CO>
|
</XC8-CO>
|
||||||
<XC8-config-global>
|
<XC8-config-global>
|
||||||
<property key="advanced-elf" value="true"/>
|
<property key="advanced-elf" value="true"/>
|
||||||
|
<property key="constdata-progmem" value="true"/>
|
||||||
<property key="gcc-opt-driver-new" value="true"/>
|
<property key="gcc-opt-driver-new" value="true"/>
|
||||||
<property key="gcc-opt-std" value="-std=c99"/>
|
<property key="gcc-opt-std" value="-std=c99"/>
|
||||||
<property key="gcc-output-file-format" value="dwarf-3"/>
|
<property key="gcc-output-file-format" value="dwarf-3"/>
|
||||||
|
<property key="mapped-progmem" value="false"/>
|
||||||
<property key="omit-pack-options" value="false"/>
|
<property key="omit-pack-options" value="false"/>
|
||||||
<property key="omit-pack-options-new" value="1"/>
|
<property key="omit-pack-options-new" value="1"/>
|
||||||
<property key="output-file-format" value="-mcof,+elf"/>
|
<property key="output-file-format" value="-mcof,+elf"/>
|
||||||
|
<property key="smart-io-format" value=""/>
|
||||||
<property key="stack-size-high" value="auto"/>
|
<property key="stack-size-high" value="auto"/>
|
||||||
<property key="stack-size-low" value="auto"/>
|
<property key="stack-size-low" value="auto"/>
|
||||||
<property key="stack-size-main" value="auto"/>
|
<property key="stack-size-main" value="auto"/>
|
||||||
|
File diff suppressed because one or more lines are too long
74
UML/watchdog.uxf
Normal file
74
UML/watchdog.uxf
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<diagram program="umlet" version="15.0.0">
|
||||||
|
<zoom_level>15</zoom_level>
|
||||||
|
<element>
|
||||||
|
<id>UMLSpecialState</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>315</x>
|
||||||
|
<y>270</y>
|
||||||
|
<w>30</w>
|
||||||
|
<h>30</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>type=initial</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>315</x>
|
||||||
|
<y>285</y>
|
||||||
|
<w>120</w>
|
||||||
|
<h>105</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=->
|
||||||
|
evWDinit</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLState</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>255</x>
|
||||||
|
<y>360</y>
|
||||||
|
<w>150</w>
|
||||||
|
<h>60</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>STWD_ALIVE</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>180</x>
|
||||||
|
<y>375</y>
|
||||||
|
<w>270</w>
|
||||||
|
<h>135</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=->
|
||||||
|
m1=evWDpoll</panel_attributes>
|
||||||
|
<additional_attributes>100.0;30.0;100.0;70.0;10.0;70.0;10.0;10.0;50.0;10.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLNote</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>480</x>
|
||||||
|
<y>360</y>
|
||||||
|
<w>150</w>
|
||||||
|
<h>60</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>send alive
|
||||||
|
by CAN</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLNote</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>375</x>
|
||||||
|
<y>225</y>
|
||||||
|
<w>150</w>
|
||||||
|
<h>60</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>read time on
|
||||||
|
EPROM</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
</diagram>
|
588
busmaster_config.cfx
Normal file
588
busmaster_config.cfx
Normal file
@ -0,0 +1,588 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<BUSMASTER_CONFIGURATION>
|
||||||
|
<Global_Configuration>
|
||||||
|
<BUSMASTER_Version>3.2.2</BUSMASTER_Version>
|
||||||
|
<IsMsgFilterEnabled>FALSE</IsMsgFilterEnabled>
|
||||||
|
<IsMsgFilterEnabledLin>FALSE</IsMsgFilterEnabledLin>
|
||||||
|
<IsReplayFilterEnabled>FALSE</IsReplayFilterEnabled>
|
||||||
|
<IsLogFilterEnabled>FALSE</IsLogFilterEnabled>
|
||||||
|
<IsLogFilterLINEnabled>FALSE</IsLogFilterLINEnabled>
|
||||||
|
<IsLoggingEnabled>FALSE</IsLoggingEnabled>
|
||||||
|
<IsMsgIntepretationEnabled>FALSE</IsMsgIntepretationEnabled>
|
||||||
|
<IsOverWriteEnabled>TRUE</IsOverWriteEnabled>
|
||||||
|
<DisplayTimeMode>SYSTEM</DisplayTimeMode>
|
||||||
|
<DisplayNumericMode>FALSE</DisplayNumericMode>
|
||||||
|
<LogOnConnect_CAN>FALSE</LogOnConnect_CAN>
|
||||||
|
<LogOnConnect_J1939>FALSE</LogOnConnect_J1939>
|
||||||
|
<LogOnConnect_LIN>FALSE</LogOnConnect_LIN>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>HIDE</WindowPlacement>
|
||||||
|
<Top>655</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>874</Bottom>
|
||||||
|
<Right>1532</Right>
|
||||||
|
</Window_Position>
|
||||||
|
</Global_Configuration>
|
||||||
|
<Module_Configuration>
|
||||||
|
<CAN_Database_Files>
|
||||||
|
<FilePath>threewheeler.DBF</FilePath>
|
||||||
|
</CAN_Database_Files>
|
||||||
|
<J1939_Database_Files/>
|
||||||
|
<CAN_DIL_Section>
|
||||||
|
<DriverName>MHS Tiny-CAN</DriverName>
|
||||||
|
<ControllerMode>Bus Off</ControllerMode>
|
||||||
|
<ControllerSettings>
|
||||||
|
<Channel>
|
||||||
|
<BaudRate>250</BaudRate>
|
||||||
|
<CNF1>7</CNF1>
|
||||||
|
<CNF2>B8</CNF2>
|
||||||
|
<CNF3>5</CNF3>
|
||||||
|
<BTR0>00</BTR0>
|
||||||
|
<BTR1>1C</BTR1>
|
||||||
|
<Clock>16</Clock>
|
||||||
|
<SamplePerc>75</SamplePerc>
|
||||||
|
<Sampling>1</Sampling>
|
||||||
|
<BTLCycles>10</BTLCycles>
|
||||||
|
<Warning_Limit>96</Warning_Limit>
|
||||||
|
<Propagation_Delay>ALL</Propagation_Delay>
|
||||||
|
<SJW>4</SJW>
|
||||||
|
<AccCodeByte1_0>0</AccCodeByte1_0>
|
||||||
|
<AccCodeByte1_1>0</AccCodeByte1_1>
|
||||||
|
<AccCodeByte2_0>0</AccCodeByte2_0>
|
||||||
|
<AccCodeByte2_1>0</AccCodeByte2_1>
|
||||||
|
<AccCodeByte3_0>0</AccCodeByte3_0>
|
||||||
|
<AccCodeByte3_1>0</AccCodeByte3_1>
|
||||||
|
<AccCodeByte4_0>0</AccCodeByte4_0>
|
||||||
|
<AccCodeByte4_1>0</AccCodeByte4_1>
|
||||||
|
<AccMaskByte1_0>FF</AccMaskByte1_0>
|
||||||
|
<AccMaskByte1_1>FF</AccMaskByte1_1>
|
||||||
|
<AccMaskByte2_0>FF</AccMaskByte2_0>
|
||||||
|
<AccMaskByte2_1>FF</AccMaskByte2_1>
|
||||||
|
<AccMaskByte3_0>FF</AccMaskByte3_0>
|
||||||
|
<AccMaskByte3_1>FF</AccMaskByte3_1>
|
||||||
|
<AccMaskByte4_0>FF</AccMaskByte4_0>
|
||||||
|
<AccMaskByte4_1>FF</AccMaskByte4_1>
|
||||||
|
<HardwareDesc>Simulation</HardwareDesc>
|
||||||
|
<ItemUnderFocus>64</ItemUnderFocus>
|
||||||
|
<BTR0BTR1>0</BTR0BTR1>
|
||||||
|
<AccFilterMode>0</AccFilterMode>
|
||||||
|
<ControllerMode>1</ControllerMode>
|
||||||
|
<SelfReception>1</SelfReception>
|
||||||
|
<HWFilterType_0>0</HWFilterType_0>
|
||||||
|
<HWFilterType_1>0</HWFilterType_1>
|
||||||
|
<Debug>0</Debug>
|
||||||
|
<PassiveMode>0</PassiveMode>
|
||||||
|
<HWTimestamps>0</HWTimestamps>
|
||||||
|
<Location/>
|
||||||
|
<LowSpeed>0</LowSpeed>
|
||||||
|
<CANFD_BaudRate>2000000</CANFD_BaudRate>
|
||||||
|
<CANFD_SamplePoint>70</CANFD_SamplePoint>
|
||||||
|
<CANFD_BTLCycles>10</CANFD_BTLCycles>
|
||||||
|
<CANFD_SJW>3</CANFD_SJW>
|
||||||
|
<CANFD_TxDelayCompensation>0</CANFD_TxDelayCompensation>
|
||||||
|
<CANFD_TxSecondarySamplePoint>0</CANFD_TxSecondarySamplePoint>
|
||||||
|
</Channel>
|
||||||
|
</ControllerSettings>
|
||||||
|
</CAN_DIL_Section>
|
||||||
|
<CAN_Signal_Watch>
|
||||||
|
<Message>
|
||||||
|
<Id>288</Id>
|
||||||
|
<Signal>DeltaY</Signal>
|
||||||
|
<Signal>aliveTime</Signal>
|
||||||
|
<Signal>timeMeasureOrDeltaX</Signal>
|
||||||
|
<Signal>mode</Signal>
|
||||||
|
</Message>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>HIDE</WindowPlacement>
|
||||||
|
<Top>622</Top>
|
||||||
|
<Left>86</Left>
|
||||||
|
<Right>816</Right>
|
||||||
|
<Bottom>998</Bottom>
|
||||||
|
</Window_Position>
|
||||||
|
<COLUMN_WIDTH>
|
||||||
|
<MESSAGE_COLUMN>142</MESSAGE_COLUMN>
|
||||||
|
<Raw_Val_Column>174</Raw_Val_Column>
|
||||||
|
<Physical_Val_Column>285</Physical_Val_Column>
|
||||||
|
<Signal_Column>142</Signal_Column>
|
||||||
|
</COLUMN_WIDTH>
|
||||||
|
</CAN_Signal_Watch>
|
||||||
|
<J1939_Signal_Watch>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>HIDE</WindowPlacement>
|
||||||
|
<Top>70</Top>
|
||||||
|
<Left>10</Left>
|
||||||
|
<Right>500</Right>
|
||||||
|
<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>
|
||||||
|
</COLUMN_WIDTH>
|
||||||
|
</J1939_Signal_Watch>
|
||||||
|
<LIN_Signal_Watch>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>HIDE</WindowPlacement>
|
||||||
|
<Top>70</Top>
|
||||||
|
<Left>10</Left>
|
||||||
|
<Right>500</Right>
|
||||||
|
<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>
|
||||||
|
</COLUMN_WIDTH>
|
||||||
|
</LIN_Signal_Watch>
|
||||||
|
<CAN_Signal_Graph>
|
||||||
|
<GRAPH_PARAMETERS>
|
||||||
|
<Buffer_Size>5000</Buffer_Size>
|
||||||
|
<Refresh_Rate>1000</Refresh_Rate>
|
||||||
|
<Frame_Color>21760</Frame_Color>
|
||||||
|
<Frame_Style>1</Frame_Style>
|
||||||
|
<Plot_Area_Color>0</Plot_Area_Color>
|
||||||
|
<Grid_Color>12632256</Grid_Color>
|
||||||
|
<Axis_Color>255</Axis_Color>
|
||||||
|
<X_Grid_Lines>10</X_Grid_Lines>
|
||||||
|
<Y_Grid_Lines>5</Y_Grid_Lines>
|
||||||
|
<Active_Axis>2</Active_Axis>
|
||||||
|
<Selected_Action>0</Selected_Action>
|
||||||
|
<Show_Grid>TRUE</Show_Grid>
|
||||||
|
<Display_Type>NORMAL</Display_Type>
|
||||||
|
</GRAPH_PARAMETERS>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>HIDE</Visibility>
|
||||||
|
<Window_Position>HIDE</Window_Position>
|
||||||
|
<Top>-1</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>0</Bottom>
|
||||||
|
<Right>0</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Splitter_Window_Col_0>
|
||||||
|
<CxIdeal>-1</CxIdeal>
|
||||||
|
<CxMin>0</CxMin>
|
||||||
|
</Splitter_Window_Col_0>
|
||||||
|
<Splitter_Window_Col_1>
|
||||||
|
<CxIdeal>0</CxIdeal>
|
||||||
|
<CxMin>0</CxMin>
|
||||||
|
</Splitter_Window_Col_1>
|
||||||
|
<Splitter_Window_Row_0>
|
||||||
|
<CxIdeal>0</CxIdeal>
|
||||||
|
<CxMin>0</CxMin>
|
||||||
|
</Splitter_Window_Row_0>
|
||||||
|
<Splitter_Window_Row_1>
|
||||||
|
<CxIdeal>0</CxIdeal>
|
||||||
|
<CxMin>0</CxMin>
|
||||||
|
</Splitter_Window_Row_1>
|
||||||
|
</CAN_Signal_Graph>
|
||||||
|
<CAN_Log>
|
||||||
|
<LogOnConnect>0</LogOnConnect>
|
||||||
|
</CAN_Log>
|
||||||
|
<J1939_Log>
|
||||||
|
<LogOnConnect>0</LogOnConnect>
|
||||||
|
</J1939_Log>
|
||||||
|
<LIN_Log>
|
||||||
|
<LogOnConnect>0</LogOnConnect>
|
||||||
|
</LIN_Log>
|
||||||
|
<CAN_Simulated_Systems>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>HIDE</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>0</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>0</Bottom>
|
||||||
|
<Right>0</Right>
|
||||||
|
</Window_Position>
|
||||||
|
</CAN_Simulated_Systems>
|
||||||
|
<J1939_Simulated_Systems>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>HIDE</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>0</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>0</Bottom>
|
||||||
|
<Right>0</Right>
|
||||||
|
</Window_Position>
|
||||||
|
</J1939_Simulated_Systems>
|
||||||
|
<CAN_Replay/>
|
||||||
|
<CAN_Message_Window>
|
||||||
|
<Append_Buffer_Size>5000</Append_Buffer_Size>
|
||||||
|
<Overwrite_Buffer_Size>2000</Overwrite_Buffer_Size>
|
||||||
|
<Display_Update_Time>100</Display_Update_Time>
|
||||||
|
<COLUMN>
|
||||||
|
<ID/>
|
||||||
|
<Order>1</Order>
|
||||||
|
<IsVisible>0</IsVisible>
|
||||||
|
<Width>0</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Time</ID>
|
||||||
|
<Order>2</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>138</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Tx/Rx</ID>
|
||||||
|
<Order>3</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>85</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Channel</ID>
|
||||||
|
<Order>4</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>92</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Msg Type</ID>
|
||||||
|
<Order>5</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>71</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>ID</ID>
|
||||||
|
<Order>6</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>69</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Message</ID>
|
||||||
|
<Order>7</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>174</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>DLC</ID>
|
||||||
|
<Order>8</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>75</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Data Byte(s)</ID>
|
||||||
|
<Order>9</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>198</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<IsHex>1</IsHex>
|
||||||
|
<IsAppend>0</IsAppend>
|
||||||
|
<IsInterpret>0</IsInterpret>
|
||||||
|
<Time_Mode>SYSTEM</Time_Mode>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>0</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>295</Bottom>
|
||||||
|
<Right>909</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Interpretation_Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>271</Top>
|
||||||
|
<Left>879</Left>
|
||||||
|
<Bottom>958</Bottom>
|
||||||
|
<Right>1552</Right>
|
||||||
|
</Interpretation_Window_Position>
|
||||||
|
</CAN_Message_Window>
|
||||||
|
<J1939_Message_Window>
|
||||||
|
<COLUMN>
|
||||||
|
<ID/>
|
||||||
|
<Order>1</Order>
|
||||||
|
<IsVisible>0</IsVisible>
|
||||||
|
<Width>0</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Time</ID>
|
||||||
|
<Order>2</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>91</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Channel</ID>
|
||||||
|
<Order>3</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>88</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>CAN ID</ID>
|
||||||
|
<Order>4</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>88</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>PGN</ID>
|
||||||
|
<Order>5</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>84</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>PGN Name</ID>
|
||||||
|
<Order>6</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>118</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Type</ID>
|
||||||
|
<Order>7</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>75</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Src</ID>
|
||||||
|
<Order>8</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>60</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Dest</ID>
|
||||||
|
<Order>9</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>57</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Priority</ID>
|
||||||
|
<Order>10</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>74</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Tx/Rx</ID>
|
||||||
|
<Order>11</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>73</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>DLC</ID>
|
||||||
|
<Order>12</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>70</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Data Byte(s)</ID>
|
||||||
|
<Order>13</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>720</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<IsHex>1</IsHex>
|
||||||
|
<IsAppend>0</IsAppend>
|
||||||
|
<IsInterpret>0</IsInterpret>
|
||||||
|
<Time_Mode>SYSTEM</Time_Mode>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>0</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>543</Bottom>
|
||||||
|
<Right>1614</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Interpretation_Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>179</Top>
|
||||||
|
<Left>10</Left>
|
||||||
|
<Bottom>457</Bottom>
|
||||||
|
<Right>359</Right>
|
||||||
|
</Interpretation_Window_Position>
|
||||||
|
</J1939_Message_Window>
|
||||||
|
<LIN_Message_Window>
|
||||||
|
<Append_Buffer_Size>5000</Append_Buffer_Size>
|
||||||
|
<Overwrite_Buffer_Size>2000</Overwrite_Buffer_Size>
|
||||||
|
<Display_Update_Time>100</Display_Update_Time>
|
||||||
|
<COLUMN>
|
||||||
|
<ID/>
|
||||||
|
<Order>1</Order>
|
||||||
|
<IsVisible>0</IsVisible>
|
||||||
|
<Width>0</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Time</ID>
|
||||||
|
<Order>2</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>95</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Message</ID>
|
||||||
|
<Order>3</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>99</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Message Type</ID>
|
||||||
|
<Order>4</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>135</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Tx/Rx</ID>
|
||||||
|
<Order>5</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>85</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Channel</ID>
|
||||||
|
<Order>6</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>80</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>DLC</ID>
|
||||||
|
<Order>7</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>70</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>ID</ID>
|
||||||
|
<Order>8</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>65</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Data Byte(s)</ID>
|
||||||
|
<Order>9</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>235</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<COLUMN>
|
||||||
|
<ID>Checksum</ID>
|
||||||
|
<Order>10</Order>
|
||||||
|
<IsVisible>1</IsVisible>
|
||||||
|
<Width>734</Width>
|
||||||
|
</COLUMN>
|
||||||
|
<IsHex>1</IsHex>
|
||||||
|
<IsAppend>0</IsAppend>
|
||||||
|
<IsInterpret>0</IsInterpret>
|
||||||
|
<Time_Mode>SYSTEM</Time_Mode>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>0</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>543</Bottom>
|
||||||
|
<Right>1614</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Interpretation_Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>179</Top>
|
||||||
|
<Left>10</Left>
|
||||||
|
<Bottom>457</Bottom>
|
||||||
|
<Right>359</Right>
|
||||||
|
</Interpretation_Window_Position>
|
||||||
|
</LIN_Message_Window>
|
||||||
|
<CAN_Tx_Window>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>SETMINPOSITION</WindowPlacement>
|
||||||
|
<Top>12</Top>
|
||||||
|
<Left>989</Left>
|
||||||
|
<Bottom>667</Bottom>
|
||||||
|
<Right>1849</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Message_List>
|
||||||
|
<Message>
|
||||||
|
<Channel>1</Channel>
|
||||||
|
<Message_ID>528</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>529</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>288</Message_ID>
|
||||||
|
<IsExtended>FALSE</IsExtended>
|
||||||
|
<IsRtr>FALSE</IsRtr>
|
||||||
|
<DLC>4</DLC>
|
||||||
|
<DataBytes>0,255,1,5</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>543</Message_ID>
|
||||||
|
<IsExtended>FALSE</IsExtended>
|
||||||
|
<IsRtr>FALSE</IsRtr>
|
||||||
|
<DLC>1</DLC>
|
||||||
|
<DataBytes>0</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>
|
||||||
|
<Default_Sampling_Period>125</Default_Sampling_Period>
|
||||||
|
<SignalDefiner_AutoCorrect>1</SignalDefiner_AutoCorrect>
|
||||||
|
</CAN_Wave_Form_Genarator>
|
||||||
|
<LIN_Simulated_Systems>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>HIDE</Visibility>
|
||||||
|
<WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement>
|
||||||
|
<Top>0</Top>
|
||||||
|
<Left>0</Left>
|
||||||
|
<Bottom>0</Bottom>
|
||||||
|
<Right>0</Right>
|
||||||
|
</Window_Position>
|
||||||
|
</LIN_Simulated_Systems>
|
||||||
|
<LIN_Cluster_Config>
|
||||||
|
<CHANNEL>
|
||||||
|
<Index>0</Index>
|
||||||
|
<HWUri>Hardware</HWUri>
|
||||||
|
<BaudRate>19200</BaudRate>
|
||||||
|
<ProtocolVersion>LIN 2.0</ProtocolVersion>
|
||||||
|
<Overwrite_Settings>1</Overwrite_Settings>
|
||||||
|
<MasterMode>0</MasterMode>
|
||||||
|
<ECU/>
|
||||||
|
</CHANNEL>
|
||||||
|
</LIN_Cluster_Config>
|
||||||
|
<LIN_Tx_Window>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>SETMINPOSITION</WindowPlacement>
|
||||||
|
<Top>1</Top>
|
||||||
|
<Left>4</Left>
|
||||||
|
<Bottom>661</Bottom>
|
||||||
|
<Right>864</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Message_List/>
|
||||||
|
</LIN_Tx_Window>
|
||||||
|
<LIN_Schedule_Table>
|
||||||
|
<Window_Position>
|
||||||
|
<Visibility>SHOWNORMAL</Visibility>
|
||||||
|
<WindowPlacement>SETMINPOSITION</WindowPlacement>
|
||||||
|
<Top>183</Top>
|
||||||
|
<Left>535</Left>
|
||||||
|
<Bottom>716</Bottom>
|
||||||
|
<Right>1185</Right>
|
||||||
|
</Window_Position>
|
||||||
|
<Channel>
|
||||||
|
<Index>1</Index>
|
||||||
|
</Channel>
|
||||||
|
</LIN_Schedule_Table>
|
||||||
|
</Module_Configuration>
|
||||||
|
</BUSMASTER_CONFIGURATION>
|
Reference in New Issue
Block a user