29 #ifndef TEMU_MIL_STD_1553_H 30 #define TEMU_MIL_STD_1553_H 71 #define TEMU_1553_NS_PER_WORD 20000 72 static inline uint64_t
73 temu_mil1553TransferTime(
unsigned Words)
79 #define TEMU_1553_BITS_PER_WORD 20 80 static inline uint64_t
81 temu_mil1553BitCount(
unsigned Words)
88 static inline uint16_t
91 return (Msg->
Data[0] >> 11) & 0x1f;
94 static inline uint16_t
97 return (Msg->
Data[0] >> 10) & 1;
100 static inline uint16_t
103 return (Msg->
Data[0] >> 5) & 0x1f;
106 static inline uint16_t
109 return Msg->
Data[0] & 0x1f;
117 if (temu_mil1553CmdSubAddr(Msg) == 0x00 ||
118 temu_mil1553CmdSubAddr(Msg) == 0x1f) {
127 temu_mil1553CreateCmd(uint16_t *Cmd)
139 temu_mil1553CreateModeTransmittMsg0(uint16_t *Mode, uint16_t RTAddr,
146 *Mode = (RTAddr << 11) | (1 << 10) | MC;
153 temu_mil1553CreateModeRecvMsg0(uint16_t *Mode, uint16_t RTAddr, uint16_t MC)
159 *Mode = (RTAddr << 11) | MC;
166 temu_mil1553CreateModeTransmittMsg1(uint16_t *Mode, uint16_t RTAddr,
173 *Mode = (RTAddr << 11) | (1 << 10) | (0x1f << 5) | MC;
180 temu_mil1553CreateModeRecvMsg1(uint16_t *Mode, uint16_t RTAddr, uint16_t MC)
186 *Mode = (RTAddr << 11) | (0x1f << 5) | MC;
192 temu_mil1553CreateStatMsg(uint16_t *Stat, uint16_t RTAddr)
198 *Stat = RTAddr << 11;
206 temu_mil1553CreateDataMsg(uint16_t *Data,
size_t Words)
217 temu_mil1553CreateRecvCmdMsg(uint16_t *CmdWord, uint16_t RTAddr,
218 uint16_t SubAddr, uint16_t Words)
225 *CmdWord = (RTAddr << 11) | (SubAddr << 5) | (Words & 0x1f);
230 temu_mil1553CreateTransmittCmdMsg(uint16_t *CmdWord, uint16_t RTAddr,
231 uint16_t SubAddr, uint16_t Words)
238 *CmdWord = (RTAddr << 11) | (1 << 10) | (SubAddr << 5) | (Words & 0x1f);
260 void (*
connected)(
void *Device, temu_Mil1553BusIfaceRef Bus,
int SubAddr);
262 void (*
disconnected)(
void *Device, temu_Mil1553BusIfaceRef Bus,
int SubAddr);
269 #define TEMU_MIL1553_DEV_IFACE_TYPE "Mil1553DevIface" 272 void (*
connect)(
void *Bus,
int RTAddr, temu_Mil1553DevIfaceRef Device);
282 #define TEMU_MIL1553_BUS_IFACE_TYPE "Mil1553BusIface" 290 static inline uint16_t
291 temu_mil1553CmdWordRa(uint16_t Msg)
293 return (Msg >> 11) & 0x1f;
296 static inline uint16_t
297 temu_mil1553CmdWordSa(uint16_t Msg)
299 return (Msg >> 5) & 0x1f;
302 static inline uint16_t
303 temu_mil1553CmdWordTr(uint16_t Msg)
305 return (Msg >> 10) & 0x1;
308 static inline uint16_t
309 temu_mil1553CmdWordCount(uint16_t Msg)
314 static inline uint16_t
315 temu_mil1553ModeWordCode(uint16_t Msg)
320 static inline uint16_t
321 temu_mil1553StatWordRtAddr(uint16_t Msg)
323 return (Msg >> 11) & 0x1f;
326 static inline uint16_t
327 temu_mil1553StatWordME(uint16_t Msg)
329 return (Msg >> 10) & 1;
332 static inline uint16_t
333 temu_mil1553StatWordInst(uint16_t Msg)
335 return (Msg >> 9) & 1;
338 static inline uint16_t
339 temu_mil1553StatWordSR(uint16_t Msg)
341 return (Msg >> 8) & 1;
344 static inline uint16_t
345 temu_mil1553StatWordBC(uint16_t Msg)
347 return (Msg >> 4) & 1;
350 static inline uint16_t
351 temu_mil1553StatWordBusy(uint16_t Msg)
353 return (Msg >> 3) & 1;
356 static inline uint16_t
357 temu_mil1553StatWordSubFlag(uint16_t Msg)
359 return (Msg >> 2) & 1;
362 static inline uint16_t
363 temu_mil1553StatWordDynBusCtrl(uint16_t Msg)
365 return (Msg >> 1) & 1;
368 static inline uint16_t
369 temu_mil1553StatWordTermFlag(uint16_t Msg)
375 static inline uint16_t
378 return Msg->
Data[0] & 0x1f;
381 static inline uint16_t
384 return Msg->
Data[0] & 0x1f;
387 static inline uint16_t
390 return (Msg->
Data[0] >> 11) & 0x1f;
393 static inline uint16_t
396 return (Msg->
Data[0] >> 10) & 1;
399 static inline uint16_t
402 return (Msg->
Data[0] >> 9) & 1;
405 static inline uint16_t
408 return (Msg->
Data[0] >> 8) & 1;
411 static inline uint16_t
414 return (Msg->
Data[0] >> 4) & 1;
417 static inline uint16_t
420 return (Msg->
Data[0] >> 3) & 1;
423 static inline uint16_t
426 return (Msg->
Data[0] >> 2) & 1;
429 static inline uint16_t
432 return (Msg->
Data[0] >> 1) & 1;
435 static inline uint16_t
438 return Msg->
Data[0] & 1;
445 #define TEMU_1553_TR_BIT 0x20 447 #define TEMU_1553_DYN_BUS_CTRL 0x00 448 #define TEMU_1553_SYNC_NO_DATA 0x01 449 #define TEMU_1553_TRANSMIT_STATUS_WORD 0x02 450 #define TEMU_1553_INITIATE_SELF_TEST 0x03 451 #define TEMU_1553_TRANSMITTER_SHUTDOWN 0x04 452 #define TEMU_1553_OVERRIDE_TRANSMITTER 0x05 453 #define TEMU_1553_INHIBIT_TERM_FLAG_BIT 0x06 454 #define TEMU_1553_OVERRIDE_INHIBIT_TERM_FLAG_BIT 0x07 455 #define TEMU_1553_RESET_RT 0x08 456 #define TEMU_1553_TRANSMIT_VECTOR_WORD 0x10 457 #define TEMU_1553_SYNC_WITH_DATA 0x11 458 #define TEMU_1553_TRANSMIT_LAST_CMD 0x12 459 #define TEMU_1553_TRANSMIT_BIT_WORD 0x13 460 #define TEMU_1553_SELECTED_TRANSMITTER 0x14 461 #define TEMU_1553_OVERRIDE_SELECTED_TRANSMITTER 0x15 struct temu_Mil1553Msg temu_Mil1553Msg
Definition: MilStd1553.h:44
void(* disableSendEvents)(void *Bus)
Definition: MilStd1553.h:279
Definition: MilStd1553.h:43
Definition: MilStd1553.h:258
Definition: MilStd1553.h:254
Definition: MilStd1553.h:53
void(* enableSendEvents)(void *Bus)
Definition: MilStd1553.h:278
#define TEMU_1553_NS_PER_WORD
Definition: MilStd1553.h:71
uint16_t * Data
Definition: MilStd1553.h:66
void(* connect)(void *Bus, int RTAddr, temu_Mil1553DevIfaceRef Device)
Definition: MilStd1553.h:272
Definition: MilStd1553.h:52
void(* reportStats)(void *Bus)
Definition: MilStd1553.h:274
TEMU_IFACE_REFERENCE_TYPE(temu_Mil1553Dev)
void(* disconnected)(void *Device, temu_Mil1553BusIfaceRef Bus, int SubAddr)
Called after device is disconnected.
Definition: MilStd1553.h:262
temu_Mil1553MsgType
Definition: MilStd1553.h:50
void(* busEnteredIdle)(void *Bus, temu_Mil1553BusIdleInfo *idleInfo)
Notifies the bus controller the bus enters an idle.
Definition: MilStd1553.h:267
uint8_t WordCount
Definition: MilStd1553.h:57
temu_Mil1553MsgType MsgTyp
Definition: MilStd1553.h:59
temu_Mil1553Error Err
Definition: MilStd1553.h:61
Definition: MilStd1553.h:45
void(* setBusController)(void *Bus, temu_Mil1553DevIfaceRef Device)
Definition: MilStd1553.h:280
Definition: MilStd1553.h:284
#define TEMU_1553_BITS_PER_WORD
Definition: MilStd1553.h:79
Definition: MilStd1553.h:56
Definition: MilStd1553.h:248
uint64_t LastReportSentWords
Definition: MilStd1553.h:285
void(* disconnect)(void *Bus, int RTAddr)
Definition: MilStd1553.h:273
void(* receive)(void *Device, temu_Mil1553Msg *Msg)
Receive of 1553 message.
Definition: MilStd1553.h:265
temu_Mil1553BusResetType
Definition: MilStd1553.h:247
temu_Mil1553BusResetType ResetType
Definition: MilStd1553.h:255
Definition: MilStd1553.h:51
uint64_t SentWords
Definition: MilStd1553.h:286
void(* send)(void *Bus, void *Sender, temu_Mil1553Msg *Msg)
Definition: MilStd1553.h:275
temu_Mil1553Error
Definition: MilStd1553.h:42
void(* connected)(void *Device, temu_Mil1553BusIfaceRef Bus, int SubAddr)
Called after device is connected to bus.
Definition: MilStd1553.h:260
Definition: MilStd1553.h:271