SDK  23.9.2
For IoT System Software Development
Classes | Macros | Typedefs | Enumerations | Functions
nola-common.h File Reference

System and user common types and functions. More...

#include <typedef.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <sys/time.h>

Classes

struct  gpio_interrupt_info
 GPIO 인터럽트에 관한 상세정보 More...
 

Macros

#define timerisset(tvp)   ((tvp)->tv_sec || (tvp)->tv_usec)
 
#define timerclear(tvp)   ((tvp)->tv_sec = (tvp)->tv_usec = 0)
 
#define timercmp(a, b, CMP)
 
#define timeradd(a, b, result)
 
#define timersub(a, b, result)
 
#define htons(a)   ntohs(a)
 2-byte unsigned 정수 a 를 host byte order에서 network byte order로 변환합니다.
 
#define htonl(a)   ntohl(a)
 4-byte unsigned 정수 a 를 host byte order에서 network byte order로 변환합니다.
 
#define min(x, y)   (((x) < (y)) ? (x) : (y))
 두 수 중 최소를 구합니다. More...
 
#define max(x, y)   (((x) > (y)) ? (x) : (y))
 두 수 중 최대를 구합니다. More...
 
#define abs(x)   (((x) < 0) ? (-(x)) : (x))
 수의 절대값을 구합니다. More...
 
#define constrain(x, a, b)   (((x) >= (a) && (x) <= (b)) ? (x) : (((x) < (a)) ? (a) : (b)))
 수를 특정 범위로 제한시킵니다.
 
#define lowByte(w)   ((uint8_t) ((w) & 0xff))
 변수의 낮은 (가장 오른쪽) 바이트를 구합니다.
 
#define highByte(w)   ((uint8_t) ((w) >> 8))
 변수의 높은 (가장 왼쪽) 바이트를 구합니다.
 
#define bit(n)   (1ul << (n))
 특정 비트를 구합니다.
 
#define bitRead(v, n)   (((v) >> (n)) & 1)
 수의 한 비트를 읽습니다.
 
#define bitSet(v, n)   ((v) |= bit(n))
 수의 한 비트를 1로 설정합니다.
 
#define bitClear(v, n)   ((v) &= ~bit(n))
 수의 한 비트를 0으로 설정합니다.
 
#define bitWrite(v, n, b)   ((b) ? bitSet(v, n) : bitClear(v, n))
 수의 한 비트를 특정 값으로 설정합니다.
 
#define isAscii(c)   ((unsigned) (c) <= 0177)
 
#define detachInterrupt(pin)   attachInterrupt(pin, NULL, -1)
 인터럽트를 끕니다.
 

Typedefs

typedef bool boolean
 
typedef uint8_t byte
 

Enumerations

enum  {
  SUCCESS_BYPASS = 4, SUCCESS_OPERATION_RESERVED = 3, SUCCESS_NOTHING_HAPPENED = 1, ERROR_SUCCESS = 0,
  ERROR_FAIL = -1, ERROR_NOT_ENOUGH_MEMORY = -2, ERROR_INVALID_ARGS = -3, ERROR_MORE_ARGS_REQUIRED = -4,
  ERROR_NOT_SUPPORTED = -5, ERROR_NOT_FOUND = -6, ERROR_BUSY = -7, ERROR_TIMEOUT = -8,
  ERROR_802154_FRAME_TOO_BIG = -31, ERROR_802154_SECURING_FAIL = -32, ERROR_802154_UNSECURING_FAIL = -33, ERROR_802154_INVALID_SEC_FRAME = -34,
  ERROR_6LOWPAN_COMPRESSION_FAIL = -43, ERROR_6LOWPAN_DECOMPRESSION_FAIL = -44, ERROR_6LOWPAN_INVALID_CONTEXT = -45, ERROR_IP6_INVALID_PACKET = -54,
  ERROR_IP6_NOT_READY = -57, ERROR_IP6_LINK_FAIL = -58, ERROR_ICMP6_INVALID_MESSAGE = -61
}
 
enum  ioDirection {
  INPUT, OUTPUT, INPUT_PULLUP, INPUT_PULLDOWN,
  OUTPUT_OPENDRAIN, OUTPUT_OPENDRAIN_PULLUP, OUTPUT_OPENDRAIN_PULLDOWN, UNUSED
}
 
enum  io_const {
  LOW = 0, HIGH = 1, CHANGE = 10, RISING = 11,
  FALLING = 12, NONE = 255
}
 

Functions

uint16_t ntohs (uint16_t a)
 2-byte unsigned 정수 a 를 network byte order에서 host byte order로 변환합니다.
 
uint32_t ntohl (uint32_t a)
 4-byte unsigned 정수 a 를 network byte order에서 host byte order로 변환합니다.
 
uint32_t seconds ()
 보드 부팅 이후 현재까지의 경과 시간을 초 단위로 구합니다. More...
 
uint32_t millis ()
 보드 부팅 이후 현재까지의 경과 시간을 밀리초 단위로 구합니다. More...
 
uint32_t micros ()
 보드 부팅 이후부터 현재까지의 경과 시간을 마이크로초 단위로 구합니다. More...
 
void delay (uint16_t msec)
 msec 밀리초를 지연시킵니다.
 
void delayMicroseconds (uint16_t usec)
 usec 마이크로초를 지연시킵니다.
 
void reboot ()
 소프트웨어 리셋을 통하여 시스템을 재시작합니다.
 
long map (long x, long in_min, long in_max, long out_min, long out_max)
 수를 어떤 범위에서 다른 범위로 매핑시킵니다.
 
bool pinMode (int8_t pin, enum ioDirection direction)
 pindirection 방향을 갖는 디지털 핀으로 동작하도록 설정합니다. More...
 
bool digitalWrite (int8_t pin, int value)
 pinHIGH 또는 LOW 로 설정합니다. More...
 
bool digitalToggle (int8_t pin)
 pin 을 토글합니다. More...
 
int digitalRead (int8_t pin)
 pin 의 논리 레벨을 읽습니다. More...
 
bool postTask (void(*func)(void *), void *args=nullptr)
 작업을 나중에 실행되도록 게시합니다. More...
 
void interrupts ()
 noInterrupts()로 비활성화된 인터럽트를 다시 활성화합니다.
 
void noInterrupts ()
 interrupts() 가 호출될 때까지 인터럽트를 비활성화합니다. 부득이 원자적(atomic) 실행을 요구하는 곳에서 가능한 짧게 사용합니다.
 
error_t attachInterrupt (int8_t pin, void(*function)(void), int mode, bool interrupt=false)
 Digital input pin 에 인터럽트가 발생했을 때 함수가 실행되도록 설정합니다. More...
 
error_t attachInterrupt (int8_t pin, void(*function)(void *), void *arg, int mode, bool interrupt=false)
 Digital input pin 에 인터럽트가 발생했을 때 함수가 실행되도록 설정합니다. More...
 
error_t attachInterrupt (int8_t pin, void(*function)(GPIOInterruptInfo_t &), void *arg, int mode, bool interrupt=false)
 Digital input pin 에 인터럽트가 발생했을 때 함수가 실행되도록 설정합니다. More...
 
void analogReference (int ref)
 아날로그 입력에 사용될 레퍼런스 전압을 설정합니다. More...
 
int32_t analogRead (int8_t pin)
 pin 의 전압 값을 읽습니다. More...
 
void analogReadResolution (uint8_t bits)
 analogRead()에 의해 구해지는 아날로그 값의 해상도를 비트 길이로 설정합니다. More...
 
void analogWrite (int pin, uint32_t val)
 pinval 의 아날로그 파형을 출력합니다. More...
 
void analogWriteResolution (uint8_t bits)
 DAC 아날로그 출력의 해상도를 설정합니다. More...
 
void tone (int pin, uint32_t frequency)
 pinfrequency Hz 주파수의 square wave를 출력합니다. More...
 
void noTone (int pin)
 pin 에 square wave 출력을 중단합니다.
 

Detailed Description

System and user common types and functions.

Author
Jongsoo Jeong (CoXlab)
Date
2018. 12. 26.

Macro Definition Documentation

◆ timeradd

#define timeradd (   a,
  b,
  result 
)
Value:
do { \
(result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
if ((result)->tv_usec >= 1000000) \
{ \
++(result)->tv_sec; \
(result)->tv_usec -= 1000000; \
} \
} while (0)

◆ timercmp

#define timercmp (   a,
  b,
  CMP 
)
Value:
(((a)->tv_sec == (b)->tv_sec) ? \
((a)->tv_usec CMP (b)->tv_usec) : \
((a)->tv_sec CMP (b)->tv_sec))

◆ timersub

#define timersub (   a,
  b,
  result 
)
Value:
do { \
(result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
if ((result)->tv_usec < 0) { \
--(result)->tv_sec; \
(result)->tv_usec += 1000000; \
} \
} while (0)