#####################################

Dracal Technologies Inc.
www.dracal.com

libtenki -- C library used by Dracal applications.

#####################################

Copyright (C) 2020-2023 Dracal Technologies Inc.

This software is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with This software.
If not, see <https://www.gnu.org/licenses/>.

#####################################

OVERVIEW OF MODULES

    Elementary Data Structures and Algorithms:

        buffer
            Array with cursors for reading/writing sequential data

        comparison
            Comparison functions for comparison-based algorithms

        heap
            Binary max-heap (priority queue) and heapsort using arrays

        list
            Simple list using a dynamically allocated array

        pow
            Functions to compute powers of a number, when the exponent is an integer

        queue
            Simple FIFO using a dynamically allocated circular array

    Dracal Devices:

        calpoint
            Two-dimensional user-calibration points of USB-CAL and VCP-CAL devices

        chip
            Definitions of sensor chips found on Dracal devices

        chip_conv
            Functions that convert chip raw data to quantities

        device
            Logical Dracal device composed of metadata and multiple channels.

        quantity
            Measured quantity consisting of a numerical value and a measurement unit

        source
            Extension over a Device that augments it with more data

        timestamp
            Useful macros and functions to handle timestamps (microseconds since Epoch)

        unit
            Various measurement units and functions to convert between them

        version
            Simple version number consisting of three integers: major, minor, and revision

        virtual
            Virtual Channels derived from regular Device Channels

    Device Data Logging:

        csv
            Create text logs (CSV) in conjunction with the DataLog module

        datalog
            Create and parse binary logs of Dracal device channel data

    Network:

        discovery
            Discover Tenkinet servers on local networks via UDP broadcast

        ntp
            Very simple Network Time Protocol (NTP) client

        socket
            Simple and portable IP socket helper functions

        stream
            Portable functions for sending and receiving data streams over TCP sockets

        tenkinet
            Client module of the Tenkinet protocol (TCP/IP)

    Portability Helpers:

        portable_endian
            Portable endianness conversion functions

        select_helper
            Portable convenience wrapper over the select() system call

    Miscellaneous Utility:

        str_helper
            Helper macro to turn a numerical literal into a string
