SDK  23.9.2
For IoT System Software Development
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | List of all members
IEEE802_15_4Mac Class Referenceabstract

IEEE 802.15.4 MAC Protocol. More...

#include <IEEE802_15_4Mac.hpp>

Inheritance diagram for IEEE802_15_4Mac:
PacketRadio DSTWRanging LPPMac TSCHMac

Public Member Functions

error_t send (IEEE802_15_4Frame *frame)
 frame 을 전송합니다. More...
 
error_t cancelSend (IEEE802_15_4Frame *frame)
 frame 전송을 취소합니다. More...
 
virtual void onSendDone (void(*sendDoneHandler)(IEEE802_15_4Mac &, IEEE802_15_4Frame *))
 전송이 완료될 때 호출될 함수를 지정합니다. More...
 
void onReceive (void(*receiveHandler)(IEEE802_15_4Mac &, const IEEE802_15_4Frame *))
 수신이 완료될 때 호출될 함수를 지정합니다. More...
 

Static Public Member Functions

static int32_t ConvertChToFreq2450MHz (uint16_t channelNumber)
 IEEE 802.15.4-2015 2450MHz 대역 채널번호-주파수 변환 함수 More...
 
static int32_t ConvertChToFreq917MHzSUN_FSK1 (uint16_t channelNumber)
 IEEE 802.15.4-2015 917~923.5 MHz 대역 SUN FSK operating mode #1 채널번호-주파수 변환 함수 More...
 

Public Attributes

bool useForceNoAckRequest = false
 전송할 프레임에 대해 강제로 Ack를 요청하지 않게 합니다. More...
 

Static Public Attributes

static uint16_t HoppingSequenceList2450MHz [16]
 IEEE 802.15.4-2015 2450 MHz 대역을 위한 macHoppingSequenceList. More...
 
static uint16_t HoppingSequenceList917MHzSUN_FSK1 [32]
 IEEE 802.15.4-2015 917~923.5 MHz 대역 SUN FSK operating mode #1 을 위한 macHoppingSequenceList. More...
 

Protected Member Functions

virtual bool checkTxFrame (IEEE802_15_4Frame *frame)=0
 
bool checkTxFrame (RadioPacket *frame)
 
virtual void handleRxFrame (IEEE802_15_4Frame *frame)=0
 
void handleRxFrame (RadioPacket *frame)
 
IEEE802_15_4FramegetNextTxFrame ()
 
- Protected Member Functions inherited from PacketRadio
virtual void sendDone (RadioPacket *frame, RadioPacket::Result_t)
 
virtual void receive (RadioPacket *frame)
 
RadioPacketgetNextTxFrame ()
 
error_t enqueueTxFrame (RadioPacket *frame)
 
virtual void notifySendDone (RadioPacket *frame)
 
virtual void notifyReceive (RadioPacket *frame)
 
error_t send (RadioPacket *frame)
 frame 을 전송합니다. More...
 
error_t cancelSend (RadioPacket *frame)
 frame 전송을 취소합니다. More...
 
void onSendDone (void(*sendDoneHandler)(PacketRadio &, RadioPacket *))
 전송이 완료될 때 호출될 함수를 지정합니다. More...
 
uint8_t getNumPendingSendFrames ()
 전송 대기 중인 프레임 갯수를 구합니다. More...
 
void onReceive (void(*receiveHandler)(PacketRadio &, const RadioPacket *))
 수신이 완료될 때 호출될 함수를 지정합니다. More...
 
void setEventListener (PacketRadioEventListener &)
 전송 완료 및 수신 이벤트에 대해 PacketRadioEventListener 를 구현한 클래스로 콜백합니다. More...
 

Additional Inherited Members

- Protected Types inherited from PacketRadio
enum  { TX_FIFO_SIZE = 10, RX_FIFO_SIZE = 10, TX_DONE_FIFO_SIZE = 10 }
 
- Protected Attributes inherited from PacketRadio
Queue< RadioPacket * > txFifo
 
Queue< RadioPacket * > rxFifo
 
Queue< RadioPacket * > txDoneFifo
 
void(* callbackSendDone )(PacketRadio &, RadioPacket *)
 
void(* callbackReceive )(PacketRadio &, const RadioPacket *)
 
PacketRadioEventListenereventListener
 

Detailed Description

IEEE 802.15.4 MAC Protocol.

Member Function Documentation

◆ cancelSend()

error_t IEEE802_15_4Mac::cancelSend ( IEEE802_15_4Frame frame)

frame 전송을 취소합니다.

전송 큐에 프레임이 대기 중일 때 프레임 전송을 취소합니다. 취소가 된 프레임은 onSendDone() 에 설정된 콜백함수에 의해 SEND_CANCELED 결과로 호출됩니다.

Parameters
frame취소할 프레임
Returns
  • ERROR_SUCCESS : 취소 성공
  • ERROR_FAIL : 취소할 프레임이 없어서 실패
58  {
59  return PacketRadio::cancelSend((RadioPacket *) frame);
60 }

◆ ConvertChToFreq2450MHz()

static int32_t IEEE802_15_4Mac::ConvertChToFreq2450MHz ( uint16_t  channelNumber)
inlinestatic

IEEE 802.15.4-2015 2450MHz 대역 채널번호-주파수 변환 함수

Parameters
channelNumberIEEE 802.15.4-2015 2450MHz 대역의 채널번호 (11~26)
Returns
  • ERROR_INVALID_ARGS : channelNumber 가 범위 밖의 값
  • 그 외 channelNumber 의 실제 Hz 단위 주파수 값
126  {
127  if (channelNumber >= 11 && channelNumber <= 26) {
128  return 2405000000l + 5000000l * (channelNumber - 11);
129  } else {
130  return ERROR_INVALID_ARGS;
131  }
132  }

◆ ConvertChToFreq917MHzSUN_FSK1()

static int32_t IEEE802_15_4Mac::ConvertChToFreq917MHzSUN_FSK1 ( uint16_t  channelNumber)
inlinestatic

IEEE 802.15.4-2015 917~923.5 MHz 대역 SUN FSK operating mode #1 채널번호-주파수 변환 함수

Parameters
channelNumberIEEE 802.15.4-2015 917~923.5 MHz 대역 SUN FSK operating mode #1 의 채널번호 (1~32)
Returns
  • ERROR_INVALID_ARGS : channelNumber 가 범위 밖의 값
  • 그 외 channelNumber 의 실제 Hz 단위 주파수 값
143  {
144  if (channelNumber >= 1 && channelNumber <= 32) {
145  return 917100000l + 200000l * (channelNumber - 1);
146  } else {
147  return ERROR_INVALID_ARGS;
148  }
149  }

◆ onReceive()

void IEEE802_15_4Mac::onReceive ( void(*)(IEEE802_15_4Mac &, const IEEE802_15_4Frame *)  receiveHandler)

수신이 완료될 때 호출될 함수를 지정합니다.

Parameters
sendDoneHandler콜백 함수 포인터
71  {
72  PacketRadio::onReceive((void (*)(PacketRadio &, const RadioPacket *))
73  receiveHandler);
74 }

◆ onSendDone()

void IEEE802_15_4Mac::onSendDone ( void(*)(IEEE802_15_4Mac &, IEEE802_15_4Frame *)  sendDoneHandler)
virtual

전송이 완료될 때 호출될 함수를 지정합니다.

Parameters
sendDoneHandler콜백 함수 포인터
64  {
66  sendDoneHandler);
67 }

◆ send()

error_t IEEE802_15_4Mac::send ( IEEE802_15_4Frame frame)

frame 을 전송합니다.

Parameters
frame전송할 프레임
Returns
  • ERROR_SUCCESS : 전송 큐에 성공적으로 입력됨
  • ERROR_FAIL : 프레임 오류로 인한 실패
  • ERROR_BUSY : 전송 큐가 가득차서 실패
54  {
55  return PacketRadio::send((RadioPacket *) frame);
56 }

Member Data Documentation

◆ HoppingSequenceList2450MHz

uint16_t IEEE802_15_4Mac::HoppingSequenceList2450MHz
static
Initial value:
=
{ 16, 17, 23, 18, 26, 15, 25, 22, 19, 11, 12, 13, 24, 14, 20, 21 }

IEEE 802.15.4-2015 2450 MHz 대역을 위한 macHoppingSequenceList.

◆ HoppingSequenceList917MHzSUN_FSK1

uint16_t IEEE802_15_4Mac::HoppingSequenceList917MHzSUN_FSK1
static
Initial value:
=
{ 6, 7, 21, 8, 17, 22, 26, 9, 25, 16, 2, 23, 12, 24, 19, 1,
11, 20, 15, 13, 29, 32, 30, 14, 10, 5, 18, 3, 31, 28, 27, 4 }

IEEE 802.15.4-2015 917~923.5 MHz 대역 SUN FSK operating mode #1 을 위한 macHoppingSequenceList.

◆ useForceNoAckRequest

bool IEEE802_15_4Mac::useForceNoAckRequest = false

전송할 프레임에 대해 강제로 Ack를 요청하지 않게 합니다.

기본 값은 false로, IEEE 802.15.4 MAC 에서는 전송할 프레임이 unicast 인 경우 MAC header의 Ack Request field를 set 하여 상대방으로부터 Acknowledgment frame을 응답하게 하여 성공적인 전송 여부를 확인합니다. 이 변수를 true 로 설정하면 unicast/broadcast 여부에 상관없이 MAC header의 Ack Request field를 reset 하여 상대방이 Acknowledgment frame을 응답하지 않게 합니다. 이 경우 RadioPacket::result 값은 실제 송신을 하기만 해도 RadioPacket::SUCCESS 가 됩니다.

Note
실제 MAC header에 이 속성이 적용되는 것은 IEEE802_15_4Mac::send() 시 입니다. 이미 IEEE802_15_4Mac::send() 으로 MAC 프로토콜에 전송한 프레임에 대해서는 적용되지 않습니다.

The documentation for this class was generated from the following files:
PacketRadio::send
error_t send(RadioPacket *frame)
frame 을 전송합니다.
PacketRadio::onSendDone
void onSendDone(void(*sendDoneHandler)(PacketRadio &, RadioPacket *))
전송이 완료될 때 호출될 함수를 지정합니다.
PacketRadio::onReceive
void onReceive(void(*receiveHandler)(PacketRadio &, const RadioPacket *))
수신이 완료될 때 호출될 함수를 지정합니다.
PacketRadio::cancelSend
error_t cancelSend(RadioPacket *frame)
frame 전송을 취소합니다.
ERROR_INVALID_ARGS
@ ERROR_INVALID_ARGS
Definition: nola-common.h:118
PacketRadio
Definition: PacketRadio.hpp:62
RadioPacket
무선 패킷
Definition: RadioPacket.hpp:59