📄 cardgame.oil
字号:
/**************************************************************************/
/* Counters */
/**************************************************************************/
COUNTER SHUFFLE_COUNTER {
/*@****************************************************************/
/* Shuffling Counter */
/*@****************************************************************/
MAXALLOWEDVALUE = 9;
TICKSPERBASE = 1;
MINCYCLE = 3;
};
COUNTER SYSTEM_COUNTER {
MAXALLOWEDVALUE = 65535;
TICKSPERBASE = 1000000;
MINCYCLE = 1;
};
/**************************************************************************/
/* ISRs */
/**************************************************************************/
ISR IOShuffleSwitchISR {
CATEGORY = 3;
};
/**************************************************************************/
/* Application Modes */
/**************************************************************************/
APPMODE HEAD_TO_HEAD {
VALUE = AUTO;
};
APPMODE SINGLE_PLAYER {
VALUE = AUTO;
};
APPMODE TEST {
VALUE = AUTO;
};
/**************************************************************************/
/* Messages */
/**************************************************************************/
MESSAGE CardMessageIn {
TYPE = EXTERNAL;
LENGTH = 3;
ALIGNMENT = 1;
USAGE = RECEIVE;
QUEUED = TRUE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_SUCCESS;
TRANSMISSION = DIRECT;
ACCESSNAMES = { receivedCard };
CAN_ADDRESSES = { CardMessageNode1 };
QUEUE_SIZE = 5;
RX_SUCCESS_TASK = CardReceived;
};
MESSAGE CardMessageOut {
TYPE = EXTERNAL;
LENGTH = 3;
ALIGNMENT = 1;
USAGE = SEND;
QUEUED = TRUE;
TX_NOTIFICATION = ON_SUCCESS;
RX_NOTIFICATION = NONE;
TRANSMISSION = DIRECT;
ACCESSNAMES = { dealtCard };
CAN_ADDRESSES = { CardMessageNode0 };
QUEUE_SIZE = 12;
TX_SUCCESS_TASK = ProcessKeyPress;
TX_SUCCESS_EVENT = TRANSMIT_COMPLETE;
};
MESSAGE DisplayMessage {
TYPE = INTERNAL;
LENGTH = 80;
ALIGNMENT = 1;
USAGE = SEND_RECEIVE;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_SUCCESS;
TRANSMISSION = DIRECT;
ACCESSNAMES = { displayMirrorTemp, displayMirror };
RX_SUCCESS_TASK = OutputDisplayBuffer;
RX_SUCCESS_EVENT = BUFFER_CHANGED;
};
MESSAGE KeyPressMessage {
TYPE = INTERNAL;
LENGTH = 1;
ALIGNMENT = 1;
USAGE = SEND_RECEIVE;
QUEUED = TRUE;
QUEUE_SIZE = 10;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_SUCCESS;
TRANSMISSION = DIRECT;
ACCESSNAMES = { keyPressed, keyValue };
RX_SUCCESS_TASK = ProcessKeyPress;
RX_SUCCESS_EVENT = KEYPRESS;
};
MESSAGE NodeStatusMessageIn {
TYPE = EXTERNAL;
LENGTH = 2;
ALIGNMENT = 1;
USAGE = RECEIVE;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_SUCCESS;
TRANSMISSION = DIRECT;
RX_SUCCESS_TASK = SetNetworkFlag;
CAN_ADDRESSES = { Node1StatusMessage };
ACCESSNAMES = { externalNodeStatus };
};
MESSAGE NodeStatusMessageOut {
TYPE = EXTERNAL;
LENGTH = 2;
ALIGNMENT = 1;
USAGE = SEND;
QUEUED = FALSE;
TX_NOTIFICATION = ON_DEADLINE;
RX_NOTIFICATION = NONE;
TRANSMISSION = PERIODIC;
CAN_ADDRESSES = { Node0StatusMessage };
ACCESSNAMES = { nodeStatus };
TRANSMIT_INTERVAL = 100;
TX_DEADLINE_ALARM = StatusMessageAlarm;
TX_DEADLINE_TIME = 25;
};
MESSAGE OpponentMessageIn {
TYPE = EXTERNAL;
LENGTH = 60;
ALIGNMENT = 1;
USAGE = RECEIVE;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_SUCCESS;
TRANSMISSION = DIRECT;
ACCESSNAMES = { opponentMessageInBuffer };
CAN_ADDRESSES = { OpponentMessageNode1 };
RX_SUCCESS_TASK = OpponentMessageReceived;
};
MESSAGE OpponentMessageOut {
TYPE = EXTERNAL;
LENGTH = 60;
ALIGNMENT = 1;
USAGE = SEND;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = NONE;
TRANSMISSION = DIRECT;
ACCESSNAMES = { opponentMessageOutBuffer };
CAN_ADDRESSES = { OpponentMessageNode0 };
};
MESSAGE RemainingCardsMessageIn {
TYPE = EXTERNAL;
LENGTH = 1;
ALIGNMENT = 1;
USAGE = RECEIVE;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_DEADLINE;
TRANSMISSION = DIRECT;
ACCESSNAMES = { remainingCardsIn };
CAN_ADDRESSES = { RemainingCardsNode1 };
RX_DEADLINE_ALARM = RemainingCardsMissing;
RX_DEADLINE_TIME = 700;
};
MESSAGE RemainingCardsMessageOut {
TYPE = EXTERNAL;
LENGTH = 1;
ALIGNMENT = 1;
USAGE = SEND;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = NONE;
TRANSMISSION = MIXED;
TRANSMIT_INTERVAL = 500;
VALUE_SIZE = ONE_BYTE;
RELEVANT_CHANGE = NEQ;
COMPARE_VALUE = 0;
CAN_ADDRESSES = { RemainingCardsNode0 };
ACCESSNAMES = { remainingCardsOut };
};
MESSAGE RequestModeMessageIn {
TYPE = EXTERNAL;
LENGTH = 1;
ALIGNMENT = 1;
USAGE = RECEIVE;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = ON_SUCCESS;
TRANSMISSION = DIRECT;
RX_SUCCESS_TASK = ChangeGameMode;
CAN_ADDRESSES = { RequestModeMessageNode1 };
ACCESSNAMES = { requestedMode };
};
MESSAGE RequestModeMessageOut {
TYPE = EXTERNAL;
LENGTH = 1;
ALIGNMENT = 1;
USAGE = SEND;
QUEUED = FALSE;
TX_NOTIFICATION = NONE;
RX_NOTIFICATION = NONE;
TRANSMISSION = DIRECT;
CAN_ADDRESSES = { RequestModeMessageNode0 };
ACCESSNAMES = { requestMode };
};
/**************************************************************************/
/* Access Names */
/**************************************************************************/
ACCESSNAME dealtCard {
TYPE = WITHCOPY;
DATATYPE = "CardMessageType";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME displayMirror {
TYPE = WITHOUTCOPY;
DATATYPE = "DISPLAY_MESSAGE_TYPE";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME displayMirrorTemp {
TYPE = WITHOUTCOPY;
DATATYPE = "DISPLAY_MESSAGE_TYPE";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME externalNodeStatus {
TYPE = WITHOUTCOPY;
DATATYPE = "NodeStatusType";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME keyPressed {
TYPE = WITHCOPY;
DATATYPE = "UINT8";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME keyValue {
TYPE = WITHCOPY;
DATATYPE = "UINT8";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME nodeStatus {
TYPE = WITHOUTCOPY;
DATATYPE = "NodeStatusType";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME opponentMessageInBuffer {
TYPE = WITHOUTCOPY;
DATATYPE = "char";
DATATYPE_SHAPE = ARRAY;
ARRAY_SIZE = 60;
};
ACCESSNAME opponentMessageOutBuffer {
TYPE = WITHOUTCOPY;
DATATYPE = "char";
DATATYPE_SHAPE = ARRAY;
ARRAY_SIZE = 60;
};
ACCESSNAME receivedCard {
TYPE = WITHCOPY;
DATATYPE = "CardMessageType";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME remainingCardsIn {
TYPE = WITHOUTCOPY;
DATATYPE = "UINT8";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME remainingCardsOut {
TYPE = WITHOUTCOPY;
DATATYPE = "UINT8";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME requestMode {
TYPE = WITHCOPY;
DATATYPE = "UINT8";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
ACCESSNAME requestedMode {
TYPE = WITHCOPY;
DATATYPE = "UINT8";
DATATYPE_SHAPE = SCALAR;
ARRAY_SIZE = 0;
};
/**************************************************************************/
/* Networks */
/**************************************************************************/
NETWORK Net1 {
DEVICE_TYPE = CAN;
AR_TIMER = 1000;
AS_TIMER = 1000;
B1_TIMER = 1000;
B2_TIMER = 1000;
C_TIMER = 1000;
D1_TIMER = 1000;
D2_TIMER = 1000;
E_TIMER = 1000;
BLOCK_SIZE = 3;
SEPARATION_TIME = 10;
WAIT_FRAMES = 0;
CAN_SUBNET = 0;
CAN_OBJECTS = { OpponentMessageOutObject, OpponentMessageInObject,
CardMessageInObject, CardMessageOutObject,
RequestModeMessageInObject, RequestModeMessageOutObject,
Node0StatusObject, Node1StatusObject, RemainingCardsInObject,
RemainingCardsOutObject };
};
/**************************************************************************/
/* CAN Addresses */
/**************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -