Библиотека UniCAN для Sputnix Arduino Shield ver. 0.1.0

Перед использованием:
- обновить ArduinoIDE до версии 1.8.6 или выше;
- установить через менеджер библиотек библиотеку CAN by Sandeep Mistry (https://github.com/sandeepmistry/arduino-CAN) ver 0.3.1 или выше (рекомендуется поиск по запросу "Supports Microchip MCP2515 based").

Добавить в начало скетча
    #include <unican_ard.h>

API библиотеки предоставляется через объект UCanArd.
В папке библиотеки может быть найден пример использования.
    
Инициализация:

    uint8_t UCanArd.Init();
    
    Возвращает 0 в случае успешного выполнения.
    
Смена собственного UniCAN ID
    
    uint8_t UCanArd.ChangeSelfId(uint8_t self_id);
    
    В качестве аргумента передаётся новый ID в диапазоне от 0х1 до 0х1F. Не рекомендуется использовать ID=0x1 или идентификатор который может быть использован другими устройствами. Значение по умолчанию: 0x1A.
    
    Возвращает 0 в случае успешного выполнения.
    
    
Смена UniCAN ID головного устройства
    
    uint8_t UCanArd.ChangeMasterId(uint8_t master_id);
    
    В качестве аргумента передаётся новый ID в диапазоне от 0х1 до 0х1F. Не рекомендуется использовать ID=0x1 или идентификатор который может быть использован другими устройствами. Значение по умолчанию: 0x05.
    
    Возвращает 0 в случае успешного выполнения.
        
Деинициализация:
        
    uint8_t UCanArd.DeInit();
     
    Возвращает 0 в случае успешного выполнения.   
        
Получение CAN сообщения
        
    uint8_t UCanArd.ReceiveTask();
    
    Функция должна выполняться в цикле. Получение UniCAN сообщений состоящих из нескольких кадров возможен только при малом периоде цикла (порядка нескольких мс или менее). При создании протокола рекомендуется ограничиться однокадровыми входящими сообщениями.
    
    Возвращает 0 в случае успешного выполнения.  
    
Отправка UniCAN сообщения:
    
    uint8_t UCanArd.SendMessage(uint8_t receiver_id, uint16_t msg_id, uint8_t* data, uint8_t length);
    
    Аргументы: UniCAN ID получателя, MSGid, указатель на первый байт данных и размер данных в байтах.
    
    Возвращает 0 в случае успешного выполнения.  
    
Отправка UniCAN сообщения головному устройству

    uint8_t UCanArd.SendMessageToMaster(uint16_t msg_id, uint8_t* data, uint8_t length);
    
    Аргументы: MSGid, указатель на первый байт данных и размер данных в байтах.
    
    Возвращает 0 в случае успешного выполнения.  
    
Прочитать последнее сохранённое сообщение

    uint8_t UCanArd.ReadMessage(uint8_t* sender_id, uint16_t* msg_id, uint8_t* data, uint8_t* length);
    
    Аргументы: указатель на переменные для UniCAN ID получателя, MSGid, указатель на первый байт данных и указатель на переменную для размер данных в байтах.
    
    Возвращает 0 в случае успешного выполнения, 1 - в случае отсутсвия нового сообщения.  
    
    /**
    * @brief Return acknoledge message
    * @param receiver_id unican identifier of destination (master) device
    * @return error code (0 for succesfull execution) 
    */
Ответить подтвеждением
    
    uint8_t UCanArd.SendAck(uint8_t receiver_id); 
    
    Используется стандартный MSGid 0x0118.
        
    Аргументы: UniCAN ID получателя.
    
    Возвращает 0 в случае успешного выполнения. 
    
    
Ответить отказом

    uint8_t UCanArd.SendNack(uint8_t receiver_id); 
    
    Используется стандартный MSGid 0x0119.
    
    Аргументы: UniCAN ID получателя.
    
    Возвращает 0 в случае успешного выполнения.
