From b56b9366e6c80572256d715b68cd006d2c352d34 Mon Sep 17 00:00:00 2001
From: TD <tobiasz.dryjanski@pg.edu.pl>
Date: Fri, 26 Nov 2021 19:12:28 +0100
Subject: [PATCH] zmiana cw3 na adc

---
 Instrukcje.md                                 |  31 +--
 cw3_template/.vscode/settings.json            |   6 +-
 cw3_template/kimia_usb_log.c                  | 200 ++++++++++++++++++
 cw3_template/kimia_usb_log.h                  |  77 +++++++
 cw3_template/main.c                           |  93 ++++----
 cw3_template/pca10059/s140/armgcc/Makefile    |   7 +-
 .../s140/armgcc/_build/nrf52840_xxaa.bin      | Bin 48572 -> 0 bytes
 .../s140/armgcc/_build/nrf52840_xxaa.in       |   1 -
 .../pca10059/s140/config/sdk_config.h         | 169 ++++++++++++++-
 cw3_template/temperature.c                    |  25 ---
 cw3_template/temperature.h                    |   4 -
 cw3_template/usb.c                            | 119 -----------
 cw3_template/usb.h                            |  48 -----
 13 files changed, 507 insertions(+), 273 deletions(-)
 create mode 100644 cw3_template/kimia_usb_log.c
 create mode 100644 cw3_template/kimia_usb_log.h
 delete mode 100755 cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.bin
 delete mode 100644 cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.in
 delete mode 100644 cw3_template/temperature.c
 delete mode 100644 cw3_template/temperature.h
 delete mode 100644 cw3_template/usb.c
 delete mode 100644 cw3_template/usb.h

diff --git a/Instrukcje.md b/Instrukcje.md
index 54d5158..cfbc190 100644
--- a/Instrukcje.md
+++ b/Instrukcje.md
@@ -184,28 +184,29 @@ Tranzystory są elementami elektronicznymi które przewodzą prąd warunkowo. Wa
  
 Źródła:
 img: https://www.vhv.rs/viewpic/iJxRhbb_free-vector-electronic-phototransistor-pnp-circuit-phototransistor-symbol/ 
- 
- 
 
+
+## Konwerter analogowo-cyfrowy 
+ W przypadku diody w lab1 API nrf52 zajęło się wszystkimi niskopoziomowymi problemami za nas, by zapalić diodę. Jeśli chcemy wysterować lub odczytać inny element musimy napisać sterownik samemu. Do tego możemy użyć znanego już GPIO lub ADC  (Analog-Digital Converter), korzystając z niskopoziomowego API tych modułów. 
  
- 
+Konwerter ADC zamienia wartość analogową (napięcie) na wartość cyfrową (liczbę w pamięci).
+
+== TODO ==
 
-## Zaawansowana obsługa GPIO 
 
- 
-W przypadku diody w lab1 API nrf52 zajęło się wszystkimi niskopoziomowymi problemami za nas, by zapalić diodę. Jeśli chcemy wysterować lub odczytać inny element musimy napisać sterownik samemu. Do tego możemy użyć znanego już GPIO lub ADC  (Analog-Digital Converter), korzystając z niskopoziomowego API tych modułów. 
 
-Podłączmy nasz fototranzystor podobnie jak diodę z lab1, lecz ustawmy GPIO w tryb wejścia. Wtedy zmiana stanu fototranzystora pod wpływem światła wznowi lub zatrzyma przepływ prądu. Jest do jednoznaczne z podłączeniem naszego pinu GPIO z napięciem 3.3V (gdy tranzystor przewodzi - tworzy połączenie między swoimi pinami), lub odłączeniem go od tego zasilania (gdy tranzystor nie przewodzi). Innymi słowy fototranzystor staje się swego rodzaju przełącznikiem. Za pomocą API GPIO jesteśmy w stanie odczytać wartość na pinie GPIO w naszej aplikacji jako jedynkę lub zero. 
- 
-Problem jaki się tu pojawia to jednowątkowość naszego mikrokontrolera. Odczyt wartości GPIO jest instrukcją, linią w kodzie, więc jeśli chcielibyśmy  wykonać jakąś operację gdy zmieni się wartość natężenia światła musielibyśmy czytać tą wartość w pętli i czekać aż się zmieni (polling). Pilnowanie tej wartości i robienie innych operacji nie wchodzi wtedy w grę. Na pomoc przychodzą nam przerwania - możemy ustawić je tak by zmiana wartości na pinie GPIO generowała przerwanie. Dzięki temu nasz program będzie mógł się zająć innymi operacjami podczas tego oczekiwania. 
- 
 ## Zadania 
- 
- ​	GPIO (General Purpose Input/Output) czyli wejścia/wyjścia ogólnego przeznaczenia, są to piny służace do komunikacji pomiędzy elementami systemu (np. między mikrokontrolerem a urządzeniami peryferyjnymi). Takie wyprowadzenia mogą pełnić rolę zarówno wejść jak i wyjść, i jest to zazwyczaj właściwość konfigurowalna. Ważną własnością urządzeń korzystających z interfejsu GPIO jest możliwość zgłaszania przerwań.
 
-​	Do naszego modułu nRF52840, a dokładniej do pinu P0.20 podłączony został fototranzystor. Fototranzystor to element optoelektroniczny, który pod wpływem światła zmienia napięcie na swoim wyjściu. Można zastosować go jako prosty detektor światła. 
 
-​	Korzystając z wiedzy zdobytej w poprzednich ćwiczeniach oraz dokumentacji https://infocenter.nordicsemi.com/topic/sdk_nrf5_v16.0.0/hardware_driver_gpiote.html stwórz prosty czujnik oświetlenia. Program powinien działać w taki sposób, aby po jego uruchomieniu zapaliła się dioda, natomiast po zapaleniu światła (korzystając z interfejsu webowego) dioda zgasła. Zainicjalizuj pin, do którego podłączony jest fototranzystor jako wejście, skonfiguruj w odpowiedni sposób przerwanie oraz napisz funkcję obsługującą to przerwanie. Dla parametru konfiguracyjnego `pull` ustaw wartość `NRF_GPIO_PIN_PULLUP` (tak jak w sekcji *Initialization* dokumentacji).
+	Głównym celem ćwiczenia jest napisanie prostego czujnika oświetlenia który zapala diodę 1 i 0 gdy światło jest zgaszone, i gasi diody gdy światło jest zapalone.
+	Do naszego modułu nRF52840, a dokładniej do pinu P0.02 podłączony został fototranzystor. Fototranzystor to element optoelektroniczny, który pod wpływem światła zmienia napięcie na swoim wyjściu. Można zastosować go jako prosty detektor światła. Pin P0.02 jest pinem z analogowym wejściem(AIN). We wprowadzeniu do Zad1 jest fragment pinoutu mikrokontrolera - sprawdź jaki numer wejścia analogowego ma ten pin.
+	Według dokumentacji uzupełnijcie inicjalizację SAADC tak by odbierać skwantyzowane próbki napięcia na pinie P0.02 i wysyłać tą wartość na USB. Niech timer odmierza kolejne próbki. Możecie przekształcić tą wartość na faktyczne napięcie w mV mnożąc ją : value*(3.3 + 0.3) * 1000)/1024)  [wyjaśnienie wzoru w dokumentacji]. Sprawdźcie jak zmienia się ta wartość gdy światło jest zapalone i zgaszone i na tej podstawie wybierzcie jakąś wartość graniczną. 
+	
+Dokumentacja:
+https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v16.0.0%2Fgroup__nrf__drv__saadc.html&anchor=ga4f67c6dad745133956b9ffc9df68d145
+https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v16.0.0%2Fgroup__nrfx__saadc.html&anchor=gab71a209892aedc84800887de200c5857
+
+	
 
 # Lab 4   
 
@@ -353,4 +354,4 @@ Przykładem serwisu jest LED Button Service. Jest to prosty serwis pozwalający
  
 
  
- 
\ No newline at end of file
+ 
diff --git a/cw3_template/.vscode/settings.json b/cw3_template/.vscode/settings.json
index 8c07ffd..76a164f 100644
--- a/cw3_template/.vscode/settings.json
+++ b/cw3_template/.vscode/settings.json
@@ -7,5 +7,9 @@
     "editor.rulers": [90],
     "nrf52SDKPath": "${workspaceFolder}/../../../",
     "userName": "root",
-    "group": "08"
+    "group": "07",
+    "files.associations": {
+      "kimia_usb_log.h": "c",
+      "nrfx_saadc.h": "c"
+    }
   }
\ No newline at end of file
diff --git a/cw3_template/kimia_usb_log.c b/cw3_template/kimia_usb_log.c
new file mode 100644
index 0000000..d96f582
--- /dev/null
+++ b/cw3_template/kimia_usb_log.c
@@ -0,0 +1,200 @@
+#include "kimia_usb_log.h"
+
+
+
+#include "nrf_log.h"
+#include "nrf_log_ctrl.h"
+#include "nrf_log_default_backends.h"
+
+#include "app_usbd_core.h"
+#include "app_usbd.h"
+#include "app_usbd_string_desc.h"
+#include "app_usbd_cdc_acm.h"
+#include "app_usbd_serial_num.h"
+
+
+
+
+static void cdc_acm_user_ev_handler(app_usbd_class_inst_t const * p_inst,
+                                    app_usbd_cdc_acm_user_event_t event);
+
+
+
+
+
+/**
+ * @brief CDC_ACM class instance
+ * */
+APP_USBD_CDC_ACM_GLOBAL_DEF(m_app_cdc_acm,
+                            cdc_acm_user_ev_handler,
+                            CDC_ACM_COMM_INTERFACE,
+                            CDC_ACM_DATA_INTERFACE,
+                            CDC_ACM_COMM_EPIN,
+                            CDC_ACM_DATA_EPIN,
+                            CDC_ACM_DATA_EPOUT,
+                            APP_USBD_CDC_COMM_PROTOCOL_AT_V250
+);
+
+
+
+static char m_rx_buffer[READ_SIZE];
+static char m_tx_buffer[WRITE_SIZE];//NRF_DRV_USBD_EPSIZE
+
+/**
+ * @brief User event handler @ref app_usbd_cdc_acm_user_ev_handler_t (headphones)
+ * */
+static void cdc_acm_user_ev_handler(app_usbd_class_inst_t const * p_inst,
+                                    app_usbd_cdc_acm_user_event_t event)
+{
+    app_usbd_cdc_acm_t const * p_cdc_acm = app_usbd_cdc_acm_class_get(p_inst);
+
+    switch (event)
+    {
+        case APP_USBD_CDC_ACM_USER_EVT_PORT_OPEN:
+        {
+            //bsp_board_led_on(LED_CDC_ACM_OPEN);
+
+            /*Setup first transfer*/
+            ret_code_t ret = app_usbd_cdc_acm_read(&m_app_cdc_acm,
+                                                   m_rx_buffer,
+                                                   READ_SIZE);
+            UNUSED_VARIABLE(ret);
+            break;
+        }
+        case APP_USBD_CDC_ACM_USER_EVT_PORT_CLOSE:
+            //bsp_board_led_off(LED_CDC_ACM_OPEN);
+            break;
+        case APP_USBD_CDC_ACM_USER_EVT_TX_DONE:
+            //bsp_board_led_invert(LED_CDC_ACM_TX);
+            break;
+        case APP_USBD_CDC_ACM_USER_EVT_RX_DONE:
+        {
+            ret_code_t ret;
+            NRF_LOG_INFO("Bytes waiting: %d", app_usbd_cdc_acm_bytes_stored(p_cdc_acm));
+           
+            do
+            {
+                /*Get amount of data transfered*/
+                size_t size = app_usbd_cdc_acm_rx_size(p_cdc_acm);
+                NRF_LOG_INFO("RX: size: %lu char: %c", size, m_rx_buffer[0]);
+                KIMIA_USB_PRINT("Input:%c\r\n", m_rx_buffer[0]);
+
+                /* Fetch data until internal buffer is empty */
+                ret = app_usbd_cdc_acm_read(&m_app_cdc_acm,
+                                            m_rx_buffer,
+                                            READ_SIZE);
+            } while (ret == NRF_SUCCESS);
+
+
+//                static char m_tx_buffer[NRF_DRV_USBD_EPSIZE];
+//    size_t size = sprintf(m_tx_buffer, "LE KEK");
+//    app_usbd_cdc_acm_write(&m_app_cdc_acm, m_tx_buffer, size);
+
+            //bsp_board_led_invert(LED_CDC_ACM_RX);
+            break;
+        }
+        default:
+            break;
+    }
+}
+static void usbd_user_ev_handler(app_usbd_event_type_t event)
+{
+    switch (event)
+    {
+        case APP_USBD_EVT_DRV_SUSPEND:
+           // bsp_board_led_off(LED_USB_RESUME);
+            break;
+        case APP_USBD_EVT_DRV_RESUME:
+            //bsp_board_led_on(LED_USB_RESUME);
+            break;
+        case APP_USBD_EVT_STARTED:
+            break;
+        case APP_USBD_EVT_STOPPED:
+            app_usbd_disable();
+            //bsp_board_leds_off();
+            break;
+        case APP_USBD_EVT_POWER_DETECTED:
+            NRF_LOG_INFO("USB power detected");
+
+            if (!nrf_drv_usbd_is_enabled())
+            {
+                app_usbd_enable();
+            }
+            break;
+        case APP_USBD_EVT_POWER_REMOVED:
+            NRF_LOG_INFO("USB power removed");
+            app_usbd_stop();
+            break;
+        case APP_USBD_EVT_POWER_READY:
+            NRF_LOG_INFO("USB ready");
+            app_usbd_start();
+            break;
+        default:
+            break;
+    }
+}
+
+
+
+void kimia_usb_log_init()
+{
+    ret_code_t ret;
+    static const app_usbd_config_t usbd_config = {
+        .ev_state_proc = usbd_user_ev_handler
+    };
+    app_usbd_serial_num_generate();
+
+    ret = app_usbd_init(&usbd_config);
+    APP_ERROR_CHECK(ret);
+    //NRF_LOG_INFO("USBD CDC ACM example started.");
+
+    app_usbd_class_inst_t const * class_cdc_acm = app_usbd_cdc_acm_class_inst_get(&m_app_cdc_acm);
+    ret = app_usbd_class_append(class_cdc_acm);
+    APP_ERROR_CHECK(ret);
+
+
+    //power nie jest zaimplementowany
+
+//    if (USBD_POWER_DETECTION)
+//    {
+//        ret = app_usbd_power_events_enable();
+//        APP_ERROR_CHECK(ret);
+//    }
+//    else
+//    {
+//        NRF_LOG_INFO("No USB power detection enabled\r\nStarting USB now");
+//
+//        app_usbd_enable();
+//        app_usbd_start();
+//    }
+    app_usbd_enable();
+    app_usbd_start();
+
+}
+
+
+char* kimia_usb_log_get_txbuf()
+{
+    return m_tx_buffer;
+}
+
+#define EMERGENCY_TXT "kimia_usb_log_write() WARNING: String may be too long\r\n"
+void kimia_usb_log_write(char* tx,size_t size)
+{
+    //size_t size2=strnlen(tx,WRITE_SIZE);
+    if(size>=WRITE_SIZE-1){
+        //tekst większy lub równy buforowi
+        app_usbd_cdc_acm_write(&m_app_cdc_acm, EMERGENCY_TXT, sizeof(EMERGENCY_TXT));
+    }else{
+        app_usbd_cdc_acm_write(&m_app_cdc_acm, tx, size);
+    }
+    
+    
+    
+}
+
+
+bool kimia_usb_log_process()
+{
+    return app_usbd_event_queue_process();
+}
diff --git a/cw3_template/kimia_usb_log.h b/cw3_template/kimia_usb_log.h
new file mode 100644
index 0000000..c440eb1
--- /dev/null
+++ b/cw3_template/kimia_usb_log.h
@@ -0,0 +1,77 @@
+#ifndef KIMIA_USB_LOG__H__
+#define KIMIA_USB_LOG__H__
+
+#include "stdbool.h"
+#include "string.h"
+
+
+#ifndef USBD_POWER_DETECTION
+#define USBD_POWER_DETECTION false
+#endif
+
+#define READ_SIZE 1
+#define WRITE_SIZE 1000
+
+#define CDC_ACM_COMM_INTERFACE  0
+#define CDC_ACM_COMM_EPIN       NRF_DRV_USBD_EPIN2
+
+#define CDC_ACM_DATA_INTERFACE  1
+#define CDC_ACM_DATA_EPIN       NRF_DRV_USBD_EPIN1
+#define CDC_ACM_DATA_EPOUT      NRF_DRV_USBD_EPOUT1
+
+
+
+/**
+* To makro działa dokładnie jak printf, tyle że printuje na USB
+* 
+*/
+#define KIMIA_USB_PRINT( ...)  \
+    kimia_usb_log_write(kimia_usb_log_get_txbuf(),snprintf(kimia_usb_log_get_txbuf(),WRITE_SIZE, __VA_ARGS__) )
+
+
+
+
+/**
+* Inicjalizacja biblioteki
+*/
+void kimia_usb_log_init();
+
+/**
+* Funkcja zajmująca się obsługą procesu USB, pownna być dodana w funkcji idle_state_handle by wszystko działało
+*
+* @ret false jeśli nie ma żadnych eventów
+*/
+bool kimia_usb_log_process();
+
+/**
+* Zwraca statyczny bufor tx ukryty w pliku .c
+*/
+char* kimia_usb_log_get_txbuf();
+
+/**
+* Funkcja pomocnicza dla makra KIMIA_USB_PRINT
+* Używanie jej poza makrem będzie raczej uciążliwe
+*/
+void kimia_usb_log_write(char* tx,size_t size);
+
+/*
+$(SDKDIR)/components/libraries/usbd
+app_usbd.c
+app_usbd_core.c
+app_usbd_string_desc.c
+app_usbd_serial_num.c
+
+$(SDKDIR)/components/libraries/usbd/class/cdc/acm
+app_usbd_cdc_acm.c
+
+
+$(SDKDIR)/modules/nrfx/drivers/src
+nrfx_usbd.c
+nrfx_systick.c
+nrfx_power.c
+
+$(SDKDIR)/integration/nrfx/legacy
+nrf_drv_power.c
+*/
+
+#endif
\ No newline at end of file
diff --git a/cw3_template/main.c b/cw3_template/main.c
index 470f0d0..9add474 100644
--- a/cw3_template/main.c
+++ b/cw3_template/main.c
@@ -48,26 +48,31 @@
 #include "nrf_gpio.h"
 #include "nrf_delay.h"
 #include "nrf_drv_power.h"
+#include "nrfx_saadc.h"
 
 #include "app_error.h"
 
 #include "boards.h"
 #include "bsp.h"
-#include "usb.h"
-#include "app_timer.h"
 
-// NOTE: lab3
-#include "nrf_drv_gpiote.h"
+#include "nrf_pwr_mgmt.h"
+#include "nrf_drv_saadc.h"
+
 
-#define PIN_IN 20
 
-extern char m_rx_buffer[READ_SIZE];
-extern char m_tx_buffer[NRF_DRV_USBD_EPSIZE];
-extern bool usb_ready;
+#include "app_timer.h"
+#include "kimia_usb_log.h"
 
-extern app_usbd_cdc_acm_t m_app_cdc_acm;
 
 
+static void idle_state_handle(void)
+{
+    if (kimia_usb_log_process() == false)
+    {
+        nrf_pwr_mgmt_run();
+    }
+}
+
 static void init_bsp(void)
 {
     ret_code_t ret;
@@ -75,38 +80,32 @@ static void init_bsp(void)
     APP_ERROR_CHECK(ret);
 }
 
-static void usb_init(app_usbd_config_t usbd_config)
+
+
+
+
+void saadc_callback(nrf_drv_saadc_evt_t const * p_event)
 {
-    ret_code_t ret;
-    
-    app_usbd_serial_num_generate();
+    //empty callback
+}
 
-    ret = app_usbd_init(&usbd_config);
-    APP_ERROR_CHECK(ret);
 
-    app_usbd_class_inst_t const * class_cdc_acm = app_usbd_cdc_acm_class_inst_get(&m_app_cdc_acm);
-    ret = app_usbd_class_append(class_cdc_acm);
-    APP_ERROR_CHECK(ret);
+void saadc_init(void)
+{
+    ret_code_t err_code;
+
+    err_code = nrf_drv_saadc_init(NULL, saadc_callback);
+    APP_ERROR_CHECK(err_code);
 
-    if (USBD_POWER_DETECTION)
-    {
-        ret = app_usbd_power_events_enable();
-        APP_ERROR_CHECK(ret);
-    }
-    else
-    {
-        app_usbd_enable();
-        app_usbd_start();
-    }
 }
 
 
+
+
 int main(void)
 {
     ret_code_t ret;
-    static const app_usbd_config_t usbd_config = {
-        .ev_state_proc = usbd_user_ev_handler
-    };
+
 
     ret = nrf_drv_clock_init();
     APP_ERROR_CHECK(ret);
@@ -118,34 +117,16 @@ int main(void)
         /* Just waiting */
     }
 
-    ret = app_timer_init();
-    APP_ERROR_CHECK(ret);
-
-    usb_init(usbd_config);
+    kimia_usb_log_init();
     init_bsp();
+    saadc_init();
+    
+    KIMIA_USB_PRINT("LAB3."); //print do usb zadziała tylko po jakimś czasie, użyjcie tej funkcji w timerze
     
-    bsp_board_led_on(BSP_BOARD_LED_0);
-
-    bool msg_sent = 0;
 
-    while (true)
+    //Dont change this loop
+    for (;;)
     {
-
-        while (app_usbd_event_queue_process())
-        {
-            /* Nothing to do */
-        }
-
-        if (usb_ready && !msg_sent)
-        {
-            size_t size = sprintf(m_tx_buffer, "Systemy wbudowane i mikrokontrolery!\r\n");
-            app_usbd_cdc_acm_write(&m_app_cdc_acm, m_tx_buffer, size);
-            msg_sent = 1;
-        }
-
-        /* Sleep CPU only if there was no interrupt since last loop processing */
-        __WFE();
+         idle_state_handle();
     }
 }
-
-/** @} */
diff --git a/cw3_template/pca10059/s140/armgcc/Makefile b/cw3_template/pca10059/s140/armgcc/Makefile
index 53157c2..ff5018f 100644
--- a/cw3_template/pca10059/s140/armgcc/Makefile
+++ b/cw3_template/pca10059/s140/armgcc/Makefile
@@ -2,7 +2,7 @@ PROJECT_NAME     := usbd_cdc_acm_pca10056
 TARGETS          := nrf52840_xxaa
 OUTPUT_DIRECTORY := _build
 
-SDK_ROOT := ../../../../../..
+SDK_ROOT := /home/td/Desktop/KODY/sdk_nor/nRF5SDK160098a08e2
 PROJ_DIR := ../../..
 
 $(OUTPUT_DIRECTORY)/nrf52840_xxaa.out: \
@@ -68,12 +68,13 @@ SRC_FILES += \
   $(SDK_ROOT)/components/libraries/bsp/bsp.c \
   $(SDK_ROOT)/components/libraries/bsp/bsp_cli.c \
   $(PROJ_DIR)/main.c \
-  $(PROJ_DIR)/usb.c \
   $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \
   $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \
   $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \
   $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \
   $(SDK_ROOT)/external/utf_converter/utf.c \
+  $(PROJ_DIR)/kimia_usb_log.c \
+  $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_saadc.c \
 
 # Include folders common to all targets
 INC_FOLDERS += \
@@ -140,7 +141,7 @@ CFLAGS += -DFLOAT_ABI_HARD
 CFLAGS += -DNRF52840_XXAA
 CFLAGS += -mcpu=cortex-m4
 CFLAGS += -mthumb -mabi=aapcs
-CFLAGS += -Wall -Werror
+#CFLAGS += -Wall -Werror
 CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
 # keep every function in a separate section, this allows linker to discard unused ones
 CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
diff --git a/cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.bin b/cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.bin
deleted file mode 100755
index 81fb90d32afef69f288bcfac932d887d15a8fe81..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 48572
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

diff --git a/cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.in b/cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.in
deleted file mode 100644
index 913ec2f..0000000
--- a/cw3_template/pca10059/s140/armgcc/_build/nrf52840_xxaa.in
+++ /dev/null
@@ -1 +0,0 @@
-_build/nrf52840_xxaa/gcc_startup_nrf52840.S.o _build/nrf52840_xxaa/nrf_log_backend_rtt.c.o _build/nrf52840_xxaa/nrf_log_backend_serial.c.o _build/nrf52840_xxaa/nrf_log_backend_uart.c.o _build/nrf52840_xxaa/nrf_log_default_backends.c.o _build/nrf52840_xxaa/nrf_log_frontend.c.o _build/nrf52840_xxaa/nrf_log_str_formatter.c.o _build/nrf52840_xxaa/boards.c.o _build/nrf52840_xxaa/app_button.c.o _build/nrf52840_xxaa/app_error.c.o _build/nrf52840_xxaa/app_error_handler_gcc.c.o _build/nrf52840_xxaa/app_error_weak.c.o _build/nrf52840_xxaa/app_fifo.c.o _build/nrf52840_xxaa/app_scheduler.c.o _build/nrf52840_xxaa/app_timer2.c.o _build/nrf52840_xxaa/app_uart_fifo.c.o _build/nrf52840_xxaa/app_usbd.c.o _build/nrf52840_xxaa/app_usbd_cdc_acm.c.o _build/nrf52840_xxaa/app_usbd_core.c.o _build/nrf52840_xxaa/app_usbd_serial_num.c.o _build/nrf52840_xxaa/app_usbd_string_desc.c.o _build/nrf52840_xxaa/app_util_platform.c.o _build/nrf52840_xxaa/drv_rtc.c.o _build/nrf52840_xxaa/fnmatch.c.o _build/nrf52840_xxaa/hardfault_handler_gcc.c.o _build/nrf52840_xxaa/hardfault_implementation.c.o _build/nrf52840_xxaa/nrf_assert.c.o _build/nrf52840_xxaa/nrf_atfifo.c.o _build/nrf52840_xxaa/nrf_atomic.c.o _build/nrf52840_xxaa/nrf_balloc.c.o _build/nrf52840_xxaa/nrf_cli.c.o _build/nrf52840_xxaa/nrf_cli_uart.c.o _build/nrf52840_xxaa/nrf_fprintf.c.o _build/nrf52840_xxaa/nrf_fprintf_format.c.o _build/nrf52840_xxaa/nrf_memobj.c.o _build/nrf52840_xxaa/nrf_pwr_mgmt.c.o _build/nrf52840_xxaa/nrf_queue.c.o _build/nrf52840_xxaa/nrf_ringbuf.c.o _build/nrf52840_xxaa/nrf_section_iter.c.o _build/nrf52840_xxaa/nrf_sortlist.c.o _build/nrf52840_xxaa/nrf_strerror.c.o _build/nrf52840_xxaa/nrf_drv_clock.c.o _build/nrf52840_xxaa/nrf_drv_power.c.o _build/nrf52840_xxaa/nrf_drv_uart.c.o _build/nrf52840_xxaa/nrf_nvic.c.o _build/nrf52840_xxaa/nrf_soc.c.o _build/nrf52840_xxaa/nrfx_atomic.c.o _build/nrf52840_xxaa/nrfx_clock.c.o _build/nrf52840_xxaa/nrfx_gpiote.c.o _build/nrf52840_xxaa/nrfx_power.c.o _build/nrf52840_xxaa/nrfx_prs.c.o _build/nrf52840_xxaa/nrfx_systick.c.o _build/nrf52840_xxaa/nrfx_uart.c.o _build/nrf52840_xxaa/nrfx_uarte.c.o _build/nrf52840_xxaa/nrfx_usbd.c.o _build/nrf52840_xxaa/bsp.c.o _build/nrf52840_xxaa/bsp_cli.c.o _build/nrf52840_xxaa/main.c.o _build/nrf52840_xxaa/usb.c.o _build/nrf52840_xxaa/SEGGER_RTT.c.o _build/nrf52840_xxaa/SEGGER_RTT_Syscalls_GCC.c.o _build/nrf52840_xxaa/SEGGER_RTT_printf.c.o _build/nrf52840_xxaa/system_nrf52840.c.o _build/nrf52840_xxaa/utf.c.o  -lc -lnosys -lm
diff --git a/cw3_template/pca10059/s140/config/sdk_config.h b/cw3_template/pca10059/s140/config/sdk_config.h
index d6b19ce..2c93a14 100644
--- a/cw3_template/pca10059/s140/config/sdk_config.h
+++ b/cw3_template/pca10059/s140/config/sdk_config.h
@@ -48,6 +48,173 @@
 #endif
 // <h> nRF_Drivers 
 
+// <e> NRFX_SAADC_ENABLED - nrfx_saadc - SAADC peripheral driver
+//==========================================================
+#ifndef NRFX_SAADC_ENABLED
+#define NRFX_SAADC_ENABLED 1
+#endif
+// <o> NRFX_SAADC_CONFIG_RESOLUTION  - Resolution
+ 
+// <0=> 8 bit 
+// <1=> 10 bit 
+// <2=> 12 bit 
+// <3=> 14 bit 
+
+#ifndef NRFX_SAADC_CONFIG_RESOLUTION
+#define NRFX_SAADC_CONFIG_RESOLUTION 1
+#endif
+
+// <o> NRFX_SAADC_CONFIG_OVERSAMPLE  - Sample period
+ 
+// <0=> Disabled 
+// <1=> 2x 
+// <2=> 4x 
+// <3=> 8x 
+// <4=> 16x 
+// <5=> 32x 
+// <6=> 64x 
+// <7=> 128x 
+// <8=> 256x 
+
+#ifndef NRFX_SAADC_CONFIG_OVERSAMPLE
+#define NRFX_SAADC_CONFIG_OVERSAMPLE 0
+#endif
+
+// <q> NRFX_SAADC_CONFIG_LP_MODE  - Enabling low power mode
+ 
+
+#ifndef NRFX_SAADC_CONFIG_LP_MODE
+#define NRFX_SAADC_CONFIG_LP_MODE 0
+#endif
+
+// <o> NRFX_SAADC_CONFIG_IRQ_PRIORITY  - Interrupt priority
+ 
+// <0=> 0 (highest) 
+// <1=> 1 
+// <2=> 2 
+// <3=> 3 
+// <4=> 4 
+// <5=> 5 
+// <6=> 6 
+// <7=> 7 
+
+#ifndef NRFX_SAADC_CONFIG_IRQ_PRIORITY
+#define NRFX_SAADC_CONFIG_IRQ_PRIORITY 6
+#endif
+
+// <e> NRFX_SAADC_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRFX_SAADC_CONFIG_LOG_ENABLED
+#define NRFX_SAADC_CONFIG_LOG_ENABLED 0
+#endif
+// <o> NRFX_SAADC_CONFIG_LOG_LEVEL  - Default Severity level
+ 
+// <0=> Off 
+// <1=> Error 
+// <2=> Warning 
+// <3=> Info 
+// <4=> Debug 
+
+#ifndef NRFX_SAADC_CONFIG_LOG_LEVEL
+#define NRFX_SAADC_CONFIG_LOG_LEVEL 3
+#endif
+
+// <o> NRFX_SAADC_CONFIG_INFO_COLOR  - ANSI escape code prefix.
+ 
+// <0=> Default 
+// <1=> Black 
+// <2=> Red 
+// <3=> Green 
+// <4=> Yellow 
+// <5=> Blue 
+// <6=> Magenta 
+// <7=> Cyan 
+// <8=> White 
+
+#ifndef NRFX_SAADC_CONFIG_INFO_COLOR
+#define NRFX_SAADC_CONFIG_INFO_COLOR 0
+#endif
+
+// <o> NRFX_SAADC_CONFIG_DEBUG_COLOR  - ANSI escape code prefix.
+ 
+// <0=> Default 
+// <1=> Black 
+// <2=> Red 
+// <3=> Green 
+// <4=> Yellow 
+// <5=> Blue 
+// <6=> Magenta 
+// <7=> Cyan 
+// <8=> White 
+
+#ifndef NRFX_SAADC_CONFIG_DEBUG_COLOR
+#define NRFX_SAADC_CONFIG_DEBUG_COLOR 0
+#endif
+
+// </e>
+
+// </e>
+
+
+// <e> SAADC_ENABLED - nrf_drv_saadc - SAADC peripheral driver - legacy layer
+//==========================================================
+#ifndef SAADC_ENABLED
+#define SAADC_ENABLED 1
+#endif
+// <o> SAADC_CONFIG_RESOLUTION  - Resolution
+ 
+// <0=> 8 bit 
+// <1=> 10 bit 
+// <2=> 12 bit 
+// <3=> 14 bit 
+
+#ifndef SAADC_CONFIG_RESOLUTION
+#define SAADC_CONFIG_RESOLUTION 1
+#endif
+
+// <o> SAADC_CONFIG_OVERSAMPLE  - Sample period
+ 
+// <0=> Disabled 
+// <1=> 2x 
+// <2=> 4x 
+// <3=> 8x 
+// <4=> 16x 
+// <5=> 32x 
+// <6=> 64x 
+// <7=> 128x 
+// <8=> 256x 
+
+#ifndef SAADC_CONFIG_OVERSAMPLE
+#define SAADC_CONFIG_OVERSAMPLE 0
+#endif
+
+// <q> SAADC_CONFIG_LP_MODE  - Enabling low power mode
+ 
+
+#ifndef SAADC_CONFIG_LP_MODE
+#define SAADC_CONFIG_LP_MODE 0
+#endif
+
+// <o> SAADC_CONFIG_IRQ_PRIORITY  - Interrupt priority
+ 
+
+// <i> Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice
+// <0=> 0 (highest) 
+// <1=> 1 
+// <2=> 2 
+// <3=> 3 
+// <4=> 4 
+// <5=> 5 
+// <6=> 6 
+// <7=> 7 
+
+#ifndef SAADC_CONFIG_IRQ_PRIORITY
+#define SAADC_CONFIG_IRQ_PRIORITY 6
+#endif
+
+// </e>
+
+
 //==========================================================
 // <e> GPIOTE_ENABLED - nrf_drv_gpiote - GPIOTE peripheral driver - legacy layer
 //==========================================================
@@ -1760,7 +1927,7 @@
 // <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
 //==========================================================
 #ifndef NRF_LOG_BACKEND_RTT_ENABLED
-#define NRF_LOG_BACKEND_RTT_ENABLED 0
+#define NRF_LOG_BACKEND_RTT_ENABLED 1
 #endif
 // <o> NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. 
 // <i> Size of the buffer is a trade-off between RAM usage and processing.
diff --git a/cw3_template/temperature.c b/cw3_template/temperature.c
deleted file mode 100644
index 1d29a23..0000000
--- a/cw3_template/temperature.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "temperature.h"
-
-int32_t get_temperature(void)
-{
-    // This function contains workaround for PAN_028 rev2.0A anomalies 28, 29,30 and 31.
-    int32_t volatile temp;
-    
-    NRF_TEMP->TASKS_START = 1; /** Start the temperature measurement. */
-
-    /* Busy wait while temperature measurement is not finished, you can skip waiting if you enable interrupt for DATARDY event and read the result in the interrupt. */
-    /*lint -e{845} // A zero has been given as right argument to operator '|'" */
-    while (NRF_TEMP->EVENTS_DATARDY == 0)
-    {
-        // Do nothing.
-    }
-    NRF_TEMP->EVENTS_DATARDY = 0;
-
-    /**@note Workaround for PAN_028 rev2.0A anomaly 29 - TEMP: Stop task clears the TEMP register. */
-    temp = (nrf_temp_read() / 4);
-
-    /**@note Workaround for PAN_028 rev2.0A anomaly 30 - TEMP: Temp module analog front end does not power down when DATARDY event occurs. */
-    NRF_TEMP->TASKS_STOP = 1; /** Stop the temperature measurement. */
-
-    return temp;
-}
\ No newline at end of file
diff --git a/cw3_template/temperature.h b/cw3_template/temperature.h
deleted file mode 100644
index 20896e0..0000000
--- a/cw3_template/temperature.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <stdint.h>
-#include "nrf_temp.h"
-
-int32_t get_temperature(void);
\ No newline at end of file
diff --git a/cw3_template/usb.c b/cw3_template/usb.c
deleted file mode 100644
index c9d64c4..0000000
--- a/cw3_template/usb.c
+++ /dev/null
@@ -1,119 +0,0 @@
-#include "usb.h"
-#include "app_timer.h"
-
-char m_rx_buffer[READ_SIZE];
-char m_tx_buffer[NRF_DRV_USBD_EPSIZE];
-volatile bool usb_ready = 0;
-
-APP_TIMER_DEF(m_usb_timer);
-
-/**
- * @brief CDC_ACM class instance
- * */
-APP_USBD_CDC_ACM_GLOBAL_DEF(m_app_cdc_acm,
-                            cdc_acm_user_ev_handler,
-                            CDC_ACM_COMM_INTERFACE,
-                            CDC_ACM_DATA_INTERFACE,
-                            CDC_ACM_COMM_EPIN,
-                            CDC_ACM_DATA_EPIN,
-                            CDC_ACM_DATA_EPOUT,
-                            APP_USBD_CDC_COMM_PROTOCOL_AT_V250
-);
-
-static void usb_timer_handler(void* p_context)
-{
-    usb_ready = 1;
-}
-
-
-/**
- * @brief User event handler @ref app_usbd_cdc_acm_user_ev_handler_t (headphones)
- * */
-void cdc_acm_user_ev_handler(app_usbd_class_inst_t const * p_inst,
-                                    app_usbd_cdc_acm_user_event_t event)
-{
-    app_usbd_cdc_acm_t const * p_cdc_acm = app_usbd_cdc_acm_class_get(p_inst);
-
-    switch (event)
-    {
-        case APP_USBD_CDC_ACM_USER_EVT_PORT_OPEN:
-        {
-            //bsp_board_led_on(LED_CDC_ACM_OPEN);
-
-            /*Setup first transfer*/
-            ret_code_t ret = app_usbd_cdc_acm_read(&m_app_cdc_acm,
-                                                   m_rx_buffer,
-                                                   READ_SIZE);
-            UNUSED_VARIABLE(ret);
-            ret = app_timer_create(&m_usb_timer, APP_TIMER_MODE_SINGLE_SHOT, usb_timer_handler);
-            APP_ERROR_CHECK(ret);
-            ret = app_timer_start(m_usb_timer, APP_TIMER_TICKS(50), 0);
-            APP_ERROR_CHECK(ret);
-           break;
-        }
-        case APP_USBD_CDC_ACM_USER_EVT_PORT_CLOSE:
-            //bsp_board_led_off(LED_CDC_ACM_OPEN);
-            break;
-        case APP_USBD_CDC_ACM_USER_EVT_TX_DONE:
-            //bsp_board_led_invert(LED_CDC_ACM_TX);
-            break;
-        case APP_USBD_CDC_ACM_USER_EVT_RX_DONE:
-        {
-            ret_code_t ret;
-            //NRF_LOG_INFO("Bytes waiting: %d", app_usbd_cdc_acm_bytes_stored(p_cdc_acm));
-            do
-            {
-                /*Get amount of data transfered*/
-                app_usbd_cdc_acm_rx_size(p_cdc_acm);
-                //NRF_LOG_INFO("RX: size: %lu char: %c", size, m_rx_buffer[0]);
-
-                /* Fetch data until internal buffer is empty */
-                ret = app_usbd_cdc_acm_read(&m_app_cdc_acm,
-                                            m_rx_buffer,
-                                            READ_SIZE);
-            } while (ret == NRF_SUCCESS);
-
-            //bsp_board_led_invert(LED_CDC_ACM_RX);
-            break;
-        }
-        default:
-            break;
-    }
-}
-
-void usbd_user_ev_handler(app_usbd_event_type_t event)
-{
-    switch (event)
-    {
-        case APP_USBD_EVT_DRV_SUSPEND:
-            //bsp_board_led_off(LED_USB_RESUME);
-            break;
-        case APP_USBD_EVT_DRV_RESUME:
-            //bsp_board_led_on(LED_USB_RESUME);
-            break;
-        case APP_USBD_EVT_STARTED:
-            break;
-        case APP_USBD_EVT_STOPPED:
-            app_usbd_disable();
-            //bsp_board_leds_off();
-            break;
-        case APP_USBD_EVT_POWER_DETECTED:
-           // NRF_LOG_INFO("USB power detected");
-
-            if (!nrf_drv_usbd_is_enabled())
-            {
-                app_usbd_enable();
-            }
-            break;
-        case APP_USBD_EVT_POWER_REMOVED:
-            //NRF_LOG_INFO("USB power removed");
-            app_usbd_stop();
-            break;
-        case APP_USBD_EVT_POWER_READY:
-            //NRF_LOG_INFO("USB ready");
-            app_usbd_start();
-            break;
-        default:
-            break;
-    }
-}
\ No newline at end of file
diff --git a/cw3_template/usb.h b/cw3_template/usb.h
deleted file mode 100644
index 091f472..0000000
--- a/cw3_template/usb.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "app_util.h"
-#include "app_usbd_core.h"
-#include "app_usbd.h"
-#include "app_usbd_string_desc.h"
-#include "app_usbd_cdc_acm.h"
-#include "app_usbd_serial_num.h"
-#include "nrf_delay.h"
-
-
-/**
- * @brief Enable power USB detection
- *
- * Configure if example supports USB port connection
- */
-#ifndef USBD_POWER_DETECTION
-#define USBD_POWER_DETECTION true
-#endif
-
-#define READ_SIZE 1
-
-
-
-
-void cdc_acm_user_ev_handler(app_usbd_class_inst_t const * p_inst,
-                                    app_usbd_cdc_acm_user_event_t event);
-
-void usbd_user_ev_handler(app_usbd_event_type_t event);
-
-#define CDC_ACM_COMM_INTERFACE  0
-#define CDC_ACM_COMM_EPIN       NRF_DRV_USBD_EPIN2
-
-#define CDC_ACM_DATA_INTERFACE  1
-#define CDC_ACM_DATA_EPIN       NRF_DRV_USBD_EPIN1
-#define CDC_ACM_DATA_EPOUT      NRF_DRV_USBD_EPOUT1
-
-
-///**
-// * @brief CDC_ACM class instance
-// * */
-//APP_USBD_CDC_ACM_GLOBAL_DEF(m_app_cdc_acm,
-//                            cdc_acm_user_ev_handler,
-//                            CDC_ACM_COMM_INTERFACE,
-//                            CDC_ACM_DATA_INTERFACE,
-//                            CDC_ACM_COMM_EPIN,
-//                            CDC_ACM_DATA_EPIN,
-//                            CDC_ACM_DATA_EPOUT,
-//                            APP_USBD_CDC_COMM_PROTOCOL_AT_V250
-//);
\ No newline at end of file
-- 
GitLab