Juraj Ďuďák 1 gadu atpakaļ
vecāks
revīzija
4aa585d441
2 mainītis faili ar 81 papildinājumiem un 4 dzēšanām
  1. 79 3
      Inc/nbus_types.h
  2. 2 1
      Src/nbus_app.c

+ 79 - 3
Inc/nbus_types.h

@@ -28,8 +28,6 @@
  */
 #define BUFF_SIZE (PAYLOAD_SIZE + META_SIZE)
 
-#define CMD_FLAG_GET	1
-#define CMD_FLAG_SET	0
 /**
 * @brief Symbolické konštanty pre príznak pripravenosti dát
 */
@@ -43,11 +41,21 @@ typedef enum {
 } DataReadyTypedef;
 
 
-
+/**
+ * @brief Definuje význam bytu FC v požiadavke. Bajt FC má index 2 v RX bufferi.
+ * bit 7: príznak chyby
+ * bit 6: rezervovaný
+ * bit 5: ~r/w príznak pr zápis údajov
+ * bt 4-0: kód funkcie.
+ */
 typedef struct __attribute__((packed)) {
+	/** Kód funkcie. Bit 0..4 */
 	uint8_t function : 5;
+	/** Príznak pre zápis údajov. Bit 5 */
 	uint8_t notReadWrite : 1;
+	/** Rezervoané. Bit 6 */
     uint8_t reserve : 1;
+    /** Príznak chyby. Bit 7 */
     uint8_t error : 1;
 } nBus_functionCode_t;
 
@@ -55,15 +63,29 @@ typedef struct __attribute__((packed)) {
 #define REQUEST_GET	0
 #define REQUEST_SET 1
 
+/**
+ * @brief Definuje význam bytu ADR v požiadavke. Bajt ADR má index 0 v RX bufferi.
+ * Baj obsahuje adresu koncového senzora (bit 0..4) a typ senzora (bit 5-7)
+ */
 typedef struct __attribute__((packed)) {
+	/** Adresa pripojeného senzora. Povolené adresy 1..31. Pozícia v ADR byte: 0..4*/
 	uint8_t address : 5;
+	/** Definuje typ senora: vstup/výstup.
+	 * bit 7: 0-výstupné zariadenia, 1-vstupné zariadenia
+	 */
 	uint8_t type : 3;
 } nBus_sensorByte_t;
 
 
+/**
+ * @brief Stavy komunikačného rozhrania počas behu programu.
+ */
 typedef enum {
+	/** Čaká sa na príjem dát. Nasledujúci stav: UART_RX_RECEIVING */
 	UART_RX_WAIT,
+	/** Dáta sa prijímajú. Nasledujúci stav: UART_RX_RECEIVED */
 	UART_RX_RECEIVING,
+	/** Dáta sú prijané, v ďašom cykle sa budú spracovať. Nasledujúci stav: UART_RX_WAIT*/
 	UART_RX_RECEIVED
 } nBus_Uart_RX_state;
 
@@ -80,12 +102,24 @@ typedef enum {
     * Funckia, resp. príkaz určený konkrétny koncový senzor.
     */
     UNICAST_TO_MODULE,
+	/**
+  	 * Funckia, resp. príkaz určený špecifické senzory.
+ 	 */
 	BROADCAST_SPECIFIC_SENSORS,
+	/**
+  	 * Funckia, resp. príkaz určený pre všetky moduly.
+ 	 */
 	BROADCAST_GLOBAL
 } nBusCommandType_t;
 
+
+/**
+ * @brief Určuje typ odpovede na požiadavku.
+ */
 typedef enum {
+	/** Na požiadavku sa nebude odpovedať. Zvyčajte pri BROADCAST požiadavke. */
 	NO_RESPONSE,
+	/** Na požiadavku sa bude odpovedať. Zvyčajte pri UNICAST požiadavke. */
 	SEND_RESPONSE
 
 }nBus_response_t;
@@ -97,13 +131,55 @@ typedef enum {
 } nBusMeasurementActive_t;
 
 
+/**
+ * @brief Dátová štruktúra pre implementáciu základných funkcií na aplikačnej úrovni.
+ * Komunikačný zásobník nBus je HW nezávislá implementácia komunikačného protokolu. Pre zabezpečenie
+ * elementárnych akcií je potrebné tieto akcie implementovať na konkrétnej hardvérovej platforme.
+ * Jedná sa o:
+ * - uart_receive: naštartovanie procesu prijímania dát s uvedením max dĺžky
+ * - uart_transmit: odoslaneie odpovede
+ * - led_on/led_off/led_toggle: ovládani dignalizačnej LED diódy
+ * - delay_ms: blokujúca pauza
+ * - loop_callback: interný callback pre signalizáciu externých udalostí z aplikácie.
+ */
 typedef struct{
+	/**
+	 * @brief Spustenie príjmu dát na vstunom komunikačnom rozhraní (UART, ..).
+	 * 1 parameter: pointer na pole, kde sa uložia načítané dáta.
+	 * 2 parameter: maximálna dĺžka načítaných dát.
+	 * @note Načíranie dát musí byť asynchrónne. Celé načítanie musí manažovať aplikácia.
+	 * Po úspešnom načítaní musí aplikácia zavolať funkciu nbus_cb_UART_RX(dataI); @see nbus_cb_UART_RX
+	 */
 	void (*uart_receive)(uint8_t *, int);
+	/**
+	 * @brief Odoslanie odpovede cez komunikačné rozhranie.
+	 * 1 parameter: dáta na odoslanie
+	 * 2 parameter: počet abjtov na odoslanie
+	 */
 	void (*uart_transmit)(uint8_t *, int);
+	/**
+	 * @brief Zapnutie signalizácie
+	 */
 	void (*led_on)(void);
+	/**
+	 * @brief Vypnutie signalizácie
+	 */
 	void (*led_off)(void);
+	/**
+	 * @brief Zmena stavu signalizácie
+	 */
 	void (*led_toggle)(void);
+	/**
+	 * @brief Blokujúca pauza [ms].
+	 */
 	void (*delay_ms)(uint8_t);
+	/**
+	 * Callback protokolu nBus pre signalizáciu udalostí. Tento callback sa v protokole nBus spúšťa každú iteráciu v hlavnej slučke.
+	 * Stav aplikácie uruje návratová hodnota tohto callbacku:
+	 * 0 - žiadna udalosť nenastala
+	 * 1 - signál pre pripravenosť dát z pripojených senzorov. Hodnota 1 spôsobí prečítanie dát z pripojeného sensora (nBus.interface->read())
+	 * 2 - signál oznamujúci ukončenie načítania vstupných dát cez komunikačné rozhranie. Je to signál pre ukočenie načítania, ktoré bolo sputené cez uart_receive
+	 */
 	uint8_t (*loop_callback)(void);
 
 }nBusPlatformInterface_t;

+ 2 - 1
Src/nbus_app.c

@@ -164,7 +164,8 @@ static void nbus_blink_LED(uint8_t delay) {
 /* -------------------------------------------------------- */
 
 /**
- * @brief UART receive complete
+ * @brief UART receive complete.
+ * This callback have to valled from application, when RX data is ready.
  * @param int size Size of received packet
  * Received packet is located in uBus.rx_buffer
  */