void send(void *args);
static void ledOnTask(void *);
static void ledOffTask(void *);
static void sendTask(void *args);
static void receivedProbe(uint16_t panId,
const uint8_t *eui64,
uint16_t shortId,
int16_t rssi,
const uint8_t *payload,
uint8_t payloadLen,
uint32_t channel);
uint16_t node_id = 1;
uint8_t node_ext_id[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0, 0};
uint32_t sent = 0;
uint32_t success = 0;
void setup(void) {
printf("\n*** [ATSAMR21-XPro] LPP Sender ***\n");
srand(0x1234 + node_id);
AT86RF233.begin();
Lpp->
begin(AT86RF233, 0x1234, 0xFFFF, node_ext_id);
}
static void ledOnTask(void *) {
ledTimer.
onFired(ledOffTask, NULL);
System.ledOn(0);
}
static void ledOffTask(void *) {
System.ledOff(0);
}
uint16_t ratio;
printf("TX (");
success++;
printf("S ");
} else {
printf("F ");
}
if (sent > 0)
ratio = success * 100 / sent;
else
ratio = 0;
printf("%u %% (%lu/%lu)) (%02X %02X..) t: %u\n",
ratio, success, sent,
delete frame;
}
static void sendTask(void *args) {
uint8_t n;
uint16_t dst;
uint8_t dest_ext_id[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0, 0};
error_t err;
for (dst = 2; dst <= 2; dst++) {
if (!frame) {
printf("Not enough memory\n");
return;
}
#if 0
#else
#endif
for (n = 2; n < 100; n++) {
}
printf("Sending fail.(%d)\n", err);
delete frame;
} else {
printf("Trying to send...\n");
if (sent == 0) {
success = 0;
}
sent++;
}
}
}
static void receivedProbe(uint16_t panId,
const uint8_t *eui64,
uint16_t shortId,
int16_t rssi,
const uint8_t *payload,
uint8_t payloadLen,
uint32_t channel) {
printf("* Probe received from PAN:0x%04X, "
"Node EUI64:%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x, "
"ID:%x, RSSI:%d",
panId,
eui64[0], eui64[1], eui64[2], eui64[3],
eui64[4], eui64[5], eui64[6], eui64[7],
shortId, rssi);
if (payloadLen > 0) {
uint8_t i;
printf(", length:%u, ", payloadLen);
for (i = 0; i < payloadLen; i++) {
printf("%02X ", payload[i]);
}
}
printf("\n");
}
IEEE 802.15.4 address.
Definition IEEE802_15_4Frame.hpp:60
IEEE 802.15.4 frame.
Definition IEEE802_15_4Frame.hpp:163
int16_t getPayloadAt(uint16_t index) const
Get an octet of the payload buffer at index.
uint8_t txCount
Number of Tx trials.
Definition IEEE802_15_4Frame.hpp:168
bool setPayloadAt(uint16_t index, uint8_t value)
Set an octet of the payload buffer at index to value.
bool setPayloadLength(uint16_t len)
Set payload length in unit of octets.
IEEE 802.15.4 MAC Protocol.
Definition IEEE802_15_4Mac.hpp:60
error_t send(IEEE802_15_4Frame *frame)
frame 을 전송합니다.
virtual void onSendDone(void(*sendDoneHandler)(IEEE802_15_4Mac &, IEEE802_15_4Frame *))
전송이 완료될 때 호출될 함수를 지정합니다.
Low-Power Probing: 비동기 (asynchronous) 방식의 저전력 MAC 프로토콜
Definition LPPMac.hpp:230
void setProbePayload(const uint8_t *payload, uint8_t len)
Probe 메시지에 추가로 보낼 페이로드 데이터를 설정합니다.
void onReceiveProbe(void(*func)(uint16_t panId, const uint8_t *eui64, uint16_t shortId, int16_t rssi, const uint8_t *payload, uint8_t payloadLen, uint32_t channel))
Probe 수신시 콜백함수를 지정합니다.
error_t setTxTimeout(uint16_t msec)
TxTimeout 시간을 msec 밀리초로 설정합니다.
error_t setProbePeriod(uint32_t msec)
ProbePeriod 를 msec 밀리초로 설정합니다.
error_t setRxTimeout(uint16_t msec)
RxTimeout 시간을 msec 밀리초로 설정합니다.
error_t setRxWaitTimeout(uint16_t msec)
RxWaitTimeout 시간을 msec 밀리초로 설정합니다.
void begin(PacketRadioChip &chip, uint16_t panId, uint16_t nodeId, const uint8_t *eui64)
프로토콜을 초기화합니다.
error_t setListenTimeout(uint32_t msec)
ListenTimeout 시간을 msec 밀리초로 설정합니다.
@ SUCCESS
송신 또는 수신 성공
Definition RadioPacket.hpp:69
Result_t result
송신 또는 수신 패킷 처리 결과
Definition RadioPacket.hpp:131
Timer는 일정 시간 이후에 1회 실행될 작업, 매 일정 시간마다 실행될 작업 등을 위한 기능입니다.
Definition Timer.hpp:61
bool startOneShot(uint32_t millis, bool interrupt=false)
작업함수를 millis 밀리초 이후 1회 실행합니다.
bool startPeriodic(uint32_t millis, bool interrupt=false)
작업함수를 매 millis 밀리초 주기로 반복하여 실행합니다.
void onFired(void(*func)(void *), void *args=nullptr)
타이머 만료시 실행시킬 작업함수를 지정합니다.
#define highByte(w)
변수의 높은 (가장 왼쪽) 바이트를 구합니다.
Definition nola-common.h:321
#define lowByte(w)
변수의 낮은 (가장 오른쪽) 바이트를 구합니다.
Definition nola-common.h:312
@ ERROR_SUCCESS
Definition nola-common.h:119
bool postTask(void(*func)(void *), void *args)
작업을 나중에 실행되도록 게시합니다.