MansOS API
LEDs
mos/hil/leds.h
MansOS provides API for Light-Emitting Diode (LED) setting and status checking (whether a LED is on or off). LEDs are connected directly to GPIO pins, and each platform must define pin numbers for available LEDs on the hardware platform.
LEDs can be addressed in two different forms: by color or by led number. LEDs are always accessible by number, starting from 0 up to LED_COUNT - 1
, where LED_COUNT
is a constant specifying LED count on the particular platform. LED addressing by color is optional, platform-dependent. On some platforms, such as TelosB, different colors are available, for example, red, green and blue LED. On some platforms all the LEDs can be of the same color.
Up to 8 LEDs are supported.
LED function reference
// Toggle an LED, addressed by color toggleRedLed() toggleGreenLed() toggleBlueLed() // Toggle an LED, addressed by number toggleLed(ledNr)
// Turn ON an LED, addressed by color redLedOn() greenLedOn() blueLedOn()
// Turn OFF an LED, addressed by color redLedOff() greenLedOff() blueLedOff()
// Turn ON/OFF an LED, addressed by number ledOn(uint8_t ledNr) ledOff(uint8_t ledNr)
// Return true, if an LED, addressed by number, is ON; false (zero) otherwise bool ledIsOn(ledNr)
// Get and set all LEDs, addressed by a bitmask // for example, if getLeds() returns 5, LEDs #0 and #2 are ON ((2 << 0) + (2 << 2) = 5) uint8_t getLeds() setLeds(bitmap)
Humidity sensor
See Humidity Reference .
Light sensor
mos/hil/light.h
void lightInit(); // init light sensor, do not turn it on - called by kernel automatically, not needed in application void lightOn(); // turn on light sensor void lightOff(); // turn off light sensor uint16_t readLight(); // read light value
uint16_t readVisibleLight(); // read visible light value uint16_t readPARLight(); // read photo-syntetically active radiation value
ADC
mos/hil/adc.h
void adcOn(); void adcOff();
uint16_t adcRead(uint8_t channel); // sets channel, reads value
// alternative faster version: set channel once, read multiple times (usable, if the same channel read many times) void adcSetChannel(uint8_t ch); uint16_t adcReadFast();
uint8_t adcGetChannelCount() // returns ADC channel count provided by the platform
Sleep
mos/hil/sleep.h
mleep(miliseconds)
USART
See mos/hil/usart.h for more details!
uint_t USARTInit(uint8_t id, uint32_t speed, uint8_t conf);
uint_t USARTSendByte(uint8_t id, uint8_t data); uint_t USARTSendString(uint8_t id, uint8_t *data); uint_t USARTSendStringLine(uint8_t id, uint8_t *data); void USARTSendData(uint8_t id, uint8_t *data, uint16_t len);
uint_t USARTEnableTX(uint8_t id); uint_t USARTDisableTX(uint8_t id); uint_t USARTEnableRX(uint8_t id); uint_t USARTDisableRX(uint8_t id);
/** * Set callback function for per-byte data receive. The callback is called * on every received packet * @param id - ID of the UART used (See MCU datasheet to get IDs) * @param cb - callback function: void myCallback(uint8_t byte) */ uint_t USARTSetReceiveHandle(uint8_t id, USARTCallback_t cb);
/** * Set callback for per-packet data receive. Stores the received bytes in * the buffer and the callback is called when either a newline is received * ('\n', binary value 10) or at most len bytes are received. The newline is * also stored in the buffer * Also enables USART RX automatically. * After the callback, buffer is reset and reception restarts. * Warning: Can use only one USART at a time (single buffer, single handler)! * * @param id - ID of the UART used (See MCU datasheet to get IDs) * @param cb - callback function: void myCallback(uint8_t bytes). Here the * bytes parameter contains not the last byte received but * total received byte count (i.e., bytes stored in the buffer)! * @param len - size of the buffer in bytes. Callback is called when len * bytes are received (or when '\n' is received). * When len is zero, no packet size is checked, only on newline * reception the callback is called. */ uint_t USARTSetPacketReceiveHandle(uint8_t id, USARTCallback_t cb, void *buffer, uint16_t len);