ToCoNet_bMacTxReq()

Explanation

Requests a wireless transmission in a simple network. After registering the request in the transmission queue, this function exits. The actual transmission process is executed later.

Even if you are using a relay net, you can send and receive messages from the simple net side by side. If you use this function when the relay net is in operation, unexpected behavior may occur (for example, the relay net may have a lot of communication in the background, and you may throw a transmission request to interrupt the communication).

Argument

TypeNameRemark

psTx

This structure contains the transmission information. It may be allocated as a local variable in the calling scope.

The memory area of the tsTxDataApp structure should always be cleared to zero before storing the value.

Returns

TypeRemark

boot_t

If TRUE the request was accepted, if FALSE the request was not accepted.

Sample code

static int16 i16TransmitIoData() {
  tsTxDataApp sTx;
  memset(&sTx, 0, sizeof(sTx)); // MUST ZERO CLEARED
  uint8 *q = sTx.auData; // fpr use of S_OCTET(), etc.

  // Construct its payload
  S_OCTET(sAppData.u8AppIdentifier);
  S_BE_WORD(sAppData.sIOData_now.u16Volt);
  ...
	
  // Transmit configuration
  sTx.u8Len = q - sTx.auData; // payload length
  sTx.u8Cmd = TOCONET_PACKET_CMD_APP_USER_IO_DATA; // packet type

  // Transmit options
  sTx.u32DstAddr  = TOCONET_MAC_ADDR_BROADCAST; // broadcast
  sTx.u8Retry     = 0x81; // one re-transmit

  // frame sequence number and callback id
  sAppData.u16TxFrame++;
  sTx.u8Seq = (sAppData.u16TxFrame & 0xFF);
  sTx.u8CbId = sTx.u8Seq;

  /* more detailed control options for simple net. */
  sTx.bAckReq = FALSE;
  sTx.u32SrcAddr = sToCoNet_AppContext.u16ShortAddress;
  sTx.u16RetryDur = 4; // Re-transmission interval[ms]
  sTx.u16DelayMax = 16; // Blurring of the transmission start timing (max. 16 ms)

  // transmit request to TWELITE NET.
  //   note: actual transmit occurrs afterwards.
  if (ToCoNet_bMacTxReq(&sTx)) {
    // Success (cbToCoNet_vTxEvent() is fired when the process is finished)
    return sTx.u8CbId;
  } else {
    // failed to place this request
    return -1;
  }
}

最終更新