Nol.A SDK Library  24.11.0
For IoT System Software Development
Public Member Functions | Protected Member Functions | List of all members
IPv6LoRaWAN Class Reference

IPv6 over LoRaWAN. More...

#include <IPv6LoRaWAN.hpp>

Inheritance diagram for IPv6LoRaWAN:
IPv6Interface PacketRadioEventListener

Public Member Functions

 IPv6LoRaWAN (LoRaMac &mac, uint8_t fPort=0)
 IPv6LoRaWAN 인터페이스를 생성합니다. More...
 
error_t begin (const uint8_t *devIID, const uint8_t *appIID)
 IPv6LoRaWAN 인터페이스를 시작합니다. More...
 
- Public Member Functions inherited from IPv6Interface
 IPv6Interface (Type_t type, uint8_t neigh_list_len, uint8_t prefix_list_len, uint16_t mtu)
 
error_t getAddress (IPv6Address::Type_t type, IPv6Address &dst)
 Get an IPv6 address assigned to the inf interface. More...
 
error_t getAddress (IPv6Address::Type_t type, uint8_t *dst)
 
uint8_t setPrefix (const IPv6Address &prefix_addr, uint8_t prefix_len, uint32_t lifetime, uint32_t pref_lifetime, bool autoconf)
 Set a prefix to an IPv6 interface. More...
 
void setStateNotifier (void(*func)(IPv6Interface &, State_t))
 
bool isAttached ()
 
State_t setState (State_t s)
 

Protected Member Functions

error_t getIID (uint8_t *dst) override
 
bool isInMulticastGroup (const IPv6Address &mcaddr) override
 
error_t send (uint8_t nxhop, IPv6PacketBuffer *ippkt) override
 
void receiveRS (IPv6::Header_t &ip6, void *msg, uint16_t len) override
 
void receiveRA (IPv6::Header_t &ip6, void *msg, uint16_t len) override
 
void receiveNS (IPv6::Header_t &ip6, void *msg, uint16_t len) override
 
void receiveNA (IPv6::Header_t &ip6, void *msg, uint16_t len) override
 
void receiveRedirect (IPv6::Header_t &ip6, void *msg, uint16_t len) override
 
void confirmReach (uint8_t neigh) override
 
void onTick () override
 
void onStateChanged () override
 
void notifySendDone (PacketRadio &, RadioPacket *) override
 
void notifyReceive (PacketRadio &, const RadioPacket *) override
 
- Protected Member Functions inherited from IPv6Interface
bool hasIID (const uint8_t *iid)
 
virtual uint8_t addNeighbor (const IPv6Address &addr)
 
void removeNeighbor (uint8_t n)
 
IPv6Neighbor * getNeighbor (const IPv6Address &addr)
 
uint8_t getNeighborIndex (const IPv6Address &addr)
 

Additional Inherited Members

- Public Types inherited from IPv6Interface
enum  Type_t {
  TYPE_UNKNOWN = 0 , TYPE_6LOWPAN = 1 , TYPE_ETHERNET = 2 , TYPE_PPP = 3 ,
  TYPE_6LPWAN = 4
}
 
enum  State_t {
  STATE_NONE = 0 , STATE_BECOMING_HOST = 1 , STATE_DUPLICATE = 2 , STATE_HOST = 3 ,
  STATE_BECOMING_ROUTER = 4 , STATE_ROUTER = 5
}
 
- Static Public Member Functions inherited from IPv6Interface
static const char * GetStateString (State_t)
 
- Protected Attributes inherited from IPv6Interface
bool ll_dad_passed
 
uint8_t def_hop_limit
 
const uint16_t MTU
 
uint16_t pmtu
 
Type_t dev_type
 
IPv6Prefix ** prefix = NULL
 
const uint8_t MAX_NUM_PREFIX
 
uint8_t num_valid_prefix
 
IPv6Neighbor ** neighbor = NULL
 
const uint8_t MAX_NUM_NEIGH
 
State_t state
 
void(* notify )(IPv6Interface &, State_t) = NULL
 
IPv6Interfacenext = NULL
 

Detailed Description

IPv6 over LoRaWAN.

LoRaWAN 에서 IPv6 패킷을 전송하기 위한 IPv6 인터페이스입니다. IETF의 LPWAN WGdraft-ietf-lpwan-ipv6-static-context-hc-16 (이하 IPv6 SCHC)을 기반으로 구현되었습니다. 해당 IETF 문서는 RFC가 아니며 이 클래스 또한 실험적으로 구현되었습니다. 또한 이를 연동하기 위해서는 server-side 에서도 적절한 내용이 구현되어야 합니다. 자세한 기술 문의는 suppo.nosp@m.rt@c.nosp@m.oxlab.nosp@m..kr 로 해주시기 바랍니다.

SCHC는 대역폭이 매우 제한적인 LoRaWAN 환경에서 애플리케이션 서버(이하 서버)와 디바이스가 공통의 context를 공유하여 IPv6에 대해 최고의 압축을 수행하여 IPv6 패킷을 전송하기 위한 압축기술 입니다. SCHC는 LoRaWAN 을 포함한 LPWAN에서 공통으로 적용될 수 있는 내용을 기술한 것으로 LoRaWAN-specific SCHC는 별도의 문서(draft-petrov-lpwan-ipv6-schc-over-lorawan-02)에 정의가 될 예정입니다. 하지만 현 시점에서 그 내용이 아직 부족하여 다음과 같이 몇가지를 강제합니다.

Constructor & Destructor Documentation

◆ IPv6LoRaWAN()

IPv6LoRaWAN::IPv6LoRaWAN ( LoRaMac mac,
uint8_t  fPort = 0 
)

IPv6LoRaWAN 인터페이스를 생성합니다.

Parameters
mac사용할 LoRaWAN MAC
fPort사용할 fPort 주소. 0 인 경우, Rule ID에 해당하는 fPort로 전송합니다. 0 이 아닌 경우, 지정한 fPort로 전송이 되며, Rule ID는 SCHC 패킷 가장 앞에 위치하게 됩니다. (기본 값: 0)

Member Function Documentation

◆ begin()

error_t IPv6LoRaWAN::begin ( const uint8_t *  devIID,
const uint8_t *  appIID 
)

IPv6LoRaWAN 인터페이스를 시작합니다.

Parameters
devIID내 주소 생성에 사용할 나의 EUI-64
appIID상대방 주소에 참고할 애플리케이션 서버의 EUI-64

이 함수를 부르기 전, 생성자에서 지정한 LoRaWAN MAC은 각종 콜백함수 지정, 시작(LoRaMac::begin()) 및 네트워크에 join이 완료되어야 합니다.

IPv6LoRaWAN 인터페이스가 시작되면 LoRaWAN MAC의 다음 함수에서 지정한 콜백들은 이 인터페이스에 의해 인터셉트됩니다.


The documentation for this class was generated from the following file: