/** Alltid lurt med litt kommentar i toppen
* Navn på program: wwtest01_enum_sw_case_01 WokWiTest med bibliotek
* Lenke: til program evt kilder på nett / bøker andre steder.
* Lenke: https://wokwi.com/projects/360722204779569153
*/
#include <Arduino.h>
//#include "CatDX4001.h"
// #include "lib.h"

// Det du vil se i dette eksempelet er minidel av kode
// Oppdrag 1 Bli bedre kjent med switch...case
// Dette svarer på oppgave 1 i videregående koden, der oppgven er 
// å trene på switch case, og der jeg også tar med 1 eller to enum 
// Alt er her skallet og det er lite som skjer i hver funksjon
// I tilleg tas et bibliotek CatDX4001 i bruk se #include Bare kommenter bort de to/tre #include-linjene over
// om du vil teste i tinkercad. Ellers så virker det ut av boksen i WokWi, som jeg leker med nå.
// Dersom #include "CatDX4001.h" er kommentert bort må en la være å bruke alle b1 - b5 funksjonen under
// siden de benytter CatDX4001.h som "variabelen" catta. Alle egenproduserte konstanter variabler kan en kaalle det en vil
// litt som Servo myServo; i en annen oppgave
// 
/*
CatDX4001 catta;


void b1() {
  // CatDX4001.get_status("OK");
  bool a = catta.get_status();
  // bool b = catta.select_operation(1);



}

void b2() {
  // CatDX4001.get_status("OK");
  // bool a = catta.get_status();
  bool b = catta.select_operation(1);


}

void b3() {
  // CatDX4001.get_status("OK");
  // bool a = catta.get_status();
  bool b = catta.select_operation(2);


}

void b4() {
  // CatDX4001.get_status("OK");
  // bool a = catta.get_status();
  bool b = catta.select_operation(3);


}

void b5() {
  // CatDX4001.get_status("OK");
  // bool a = catta.get_status();
  bool b = catta.select_operation(0);
  bool c = catta.select_operation(4);


}
// 
*/


void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.print("https://docs.platformio.org/en/latest/integration/ide/vscode.html#quick-start\n");
  pinMode(LED_BUILTIN, OUTPUT);

  // Dersom ikke catta/CatDX4001 brukes så kommenter linjen under
  // b1();
}

void blink01() {
  // put your main code here, to run repeatedly:

  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);

  // wait for a second
  delay(1000);

  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);

  // wait for a second
  delay(1000);


}

enum Cases {
  CHOSECASEC0, // Verdien her er 0
  CHOSECASEC1, // Verdien her er 1
  CHOSECASEC2, // Verdien her er 2
  CHOSECASEC3, // Verdien her er 3
  CHOSECASEC4  // Verdien her er 4 Legg merke til den siste har ikke ,
}; // Legg merke til ; til slutt som avslutter enum og alt er stor skrift pga. dette er en rekke, liste "array" konstanter.

Cases swcase = CHOSECASEC0; // Her velger en hvilken av enum-verdiene som er aktiv

// kort versjon Bare ta bort /// foran linjene under eller trykk ENTER etter de tre ///
/// enum konstanter {C1, C2, C3, C4}; // Her står det egentlig 0, 1, 2, 3
/// konstanter valgtkonstant = C3; // Litt som int verdien = 7;
// Faktisk kan en mikse og bruke int siden enum gir svar som 0, 1, 2, 3 som på et vis er int.
// da kan en gjøre det slik: /// int valget = int(valgtkonstant);

// Forbereder funksjonen som kan benyttes (declaration / deklarerer)
// Det er bare i arduino en kan benytte en funksjon før en har den,
// så dersom denne funksjonen skriver etter loop så kan en "jukse" med å deklarere den først
void case1Func();
void case2Func();

void loop()
{
  //blink01(); /Slutt å bruke blinkekoden


// 1 a) Setter opp en switch...case-struktur

  // int var = 5;
  switch (swcase) {
    case 1: // kunne skrevet CHOSECASEC1 istedenfor 1 siden det er verdien på CHOSECASEC1
      // her skriver du koden for caset hvor var == label_1
      Serial.println("C1: " + String(millis()) );
      case1Func();
      break;
    case CHOSECASEC2:  // 2: Legg merke til : som avslutter en og en case
      // her skriver du koden for caset hvor var == label_2
      Serial.println("C2: " + String(millis()) );
      case2Func();
      break;
    default:
      // her skriver du koden som kjøres dersom ingen av casene slo til
      // 
      Serial.println("T " + String(millis()) );
      break;
  }
/*
  b5();
  b2();
  b3();
  b4();
*/
} // loop

/**
   @brief Info
   https://docs.platformio.org/en/latest/integration/ide/vscode.html#quick-start
   https://docs.platformio.org/page/librarymanager/config.html


*/

/** Functions need for loop
*/
// Her dersom det er innhold er implementasjonen av funksjonen om ikke er det en "stub" foreløpig stub er som norske orde stubbe eller med andre ord en liten del ...
void case1Func() {} 
void case2Func() {}