MX Foundation 4
Acquisition Service

The BC channels on MIL-1553 modules support this service.

The acquisition service on a BC channel is useful to acquire the status and data that are sent to the BC from the RTs, but without resorting to the use of the BM channel.

With BC channels, this service will use the message mode. The monitor mode is an attribute changed on the BM channel, so in this case, the BM channel monitor mode must be set to either string or message mode (see the KMXF_MIL1553_BM_MODE attribute). If the BM monitor mode is set to word mode, BC channels will receive nothing.

Acquisition with BC channels work differently than with BM channels. The data transmitted by the BC is not received by this BC.

By default, command that has no response from BC will not be received. This can be changed by enabling the KMXF_MIL1553_BC_NORESP_DETECTION_ENABLE attribute.

By default, the following possibilities will be received by BC channel:

  • RXCmd/Status
  • TXCmd/Status/Data
  • TXModeCode/Status/Data (Data is optional)
  • RXModeCode/Data/Status (Data is optional)
Note
Broadcast, RT-RT transfer and no-response messages are not received by BC channels.

With KMXF_MIL1553_BC_NORESP_DETECTION_ENABLE attribute enabled, only BC-RT broadcast transfer are not received.

Refer to the MXF_MIL1553_DATAREC structure for acquisition data reading.

The same options for acquisition filtering, acquisition with trigger and asynchronous events of BM channels apply to BC channels.

uint32 rc;
HMXF_CHANNEL bc;
HMXF_BUFFER rx=0;
size_t rxBufferSize=0;
MXF_MIL1553_DATAREC* rxBuffer=NULL;
uint64 rxAcqStatus;
uint64 msgCount;
uint64 byteCount;
...
// Allocates 20KB buffer for rx data
if(!rc)
{
rxBufferSize = 20*1024;
// Flex1553 allocation
rc = mxfRxAcqBufferAlloc(bc, rxBufferSize, &rx, NULL);
// Host allocation
if(!rc)
{
rxBuffer = (MXF_MIL1553_DATAREC*)malloc(rxBufferSize);
if(!rxBuffer)
rc = MAXT_ERROR_MEM;
}
}
// Starts BC acquisition
if(!rc)
rc = mxfRxAcqStart(rx, MXF_RXACQ_FLAG_DEFAULT, 0, 0);
...
if(!rc)
rc = mxfMIL1553RxAcqRead(rx, 0, rxBufferSize, &rxAcqStatus, &msgCount, &byteCount, rxBuffer);
// Stops acquisition
if(!rc)
rc = mxfRxAcqStop(rx);
...

mil1553_bc.c

Updated 10/23/2023