From 76a92b22ad17600223b49f88c91adc1c6a4314d9 Mon Sep 17 00:00:00 2001
From: 488_MP-4 <488_MP-4@iastate.edu>
Date: Sun, 24 Mar 2024 22:27:35 +0100
Subject: [PATCH] commenting rest of files

---
 .../src/drivers/src/nvic.c                    |  172 +-
 .../src/drivers/src/pca9685.c                 |   75 +-
 .../src/drivers/src/piezo.c                   |  118 +-
 .../src/drivers/src/pmw3901.c                 |  306 ++--
 .../src/drivers/src/swd.c                     |  179 +--
 .../src/drivers/src/uart1.c                   |  165 +-
 .../src/drivers/src/uart2.c                   |  325 ++--
 .../src/drivers/src/uart_syslink.c            |  635 ++++----
 .../src/drivers/src/vl53l0x.c                 | 1386 +++++++++--------
 .../src/drivers/src/vl53l1x.c                 |  281 ++--
 .../src/drivers/src/watchdog.c                |   63 +-
 .../src/drivers/src/ws2812_cf2.c              |  327 ++--
 12 files changed, 2055 insertions(+), 1977 deletions(-)

diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/nvic.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/nvic.c
index a5c777c0e..9cc83b178 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/nvic.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/nvic.c
@@ -36,7 +36,8 @@
 
 void nvicInit(void)
 {
-  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
+  //COMMENTED FIRMWARE
+  //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
 }
 
 /**
@@ -85,81 +86,84 @@ void DONT_DISCARD HardFault_Handler(void)
   // asm (" MOVS r0, #1 \n"
   // " LDM r0,{r1-r2} \n"
   // " BX LR; \n");
-  asm( "TST LR, #4 \n"
-  "ITE EQ \n"
-  "MRSEQ R0, MSP \n"
-  "MRSNE R0, PSP \n"
-  "B printHardFault");
+  //COMMENTED FIRMWARE
+  // asm( "TST LR, #4 \n"
+  // "ITE EQ \n"
+  // "MRSEQ R0, MSP \n"
+  // "MRSNE R0, PSP \n"
+  // "B printHardFault");
 }
 
 void DONT_DISCARD printHardFault(uint32_t* hardfaultArgs)
 {
-  unsigned int stacked_r0;
-  unsigned int stacked_r1;
-  unsigned int stacked_r2;
-  unsigned int stacked_r3;
-  unsigned int stacked_r12;
-  unsigned int stacked_lr;
-  unsigned int stacked_pc;
-  unsigned int stacked_psr;
-
-  stacked_r0 = ((unsigned long) hardfaultArgs[0]);
-  stacked_r1 = ((unsigned long) hardfaultArgs[1]);
-  stacked_r2 = ((unsigned long) hardfaultArgs[2]);
-  stacked_r3 = ((unsigned long) hardfaultArgs[3]);
-
-  stacked_r12 = ((unsigned long) hardfaultArgs[4]);
-  stacked_lr = ((unsigned long) hardfaultArgs[5]);
-  stacked_pc = ((unsigned long) hardfaultArgs[6]);
-  stacked_psr = ((unsigned long) hardfaultArgs[7]);
-
-
-  UART_PRINT("[Hard fault handler]\n");
-  UART_PRINT("R0 = %x\n", stacked_r0);
-  UART_PRINT("R1 = %x\n", stacked_r1);
-  UART_PRINT("R2 = %x\n", stacked_r2);
-  UART_PRINT("R3 = %x\n", stacked_r3);
-  UART_PRINT("R12 = %x\n", stacked_r12);
-  UART_PRINT("LR = %x\n", stacked_lr);
-  UART_PRINT("PC = %x\n", stacked_pc);
-  UART_PRINT("PSR = %x\n", stacked_psr);
-  UART_PRINT("BFAR = %x\n", (*((volatile unsigned int *)(0xE000ED38))));
-  UART_PRINT("CFSR = %x\n", (*((volatile unsigned int *)(0xE000ED28))));
-  UART_PRINT("HFSR = %x\n", (*((volatile unsigned int *)(0xE000ED2C))));
-  UART_PRINT("DFSR = %x\n", (*((volatile unsigned int *)(0xE000ED30))));
-  UART_PRINT("AFSR = %x\n", (*((volatile unsigned int *)(0xE000ED3C))));
-
-  ledClearAll();
-  ledSet(ERR_LED1, 1);
-  ledSet(ERR_LED2, 1);
-  powerStop();
-
-  storeAssertHardfaultData(
-    stacked_r0,
-    stacked_r1,
-    stacked_r2,
-    stacked_r3,
-    stacked_r12,
-    stacked_lr,
-    stacked_pc,
-    stacked_psr);
-  while (1)
-  {}
+  //COMMENTED FIRMWARE
+  // unsigned int stacked_r0;
+  // unsigned int stacked_r1;
+  // unsigned int stacked_r2;
+  // unsigned int stacked_r3;
+  // unsigned int stacked_r12;
+  // unsigned int stacked_lr;
+  // unsigned int stacked_pc;
+  // unsigned int stacked_psr;
+
+  // stacked_r0 = ((unsigned long) hardfaultArgs[0]);
+  // stacked_r1 = ((unsigned long) hardfaultArgs[1]);
+  // stacked_r2 = ((unsigned long) hardfaultArgs[2]);
+  // stacked_r3 = ((unsigned long) hardfaultArgs[3]);
+
+  // stacked_r12 = ((unsigned long) hardfaultArgs[4]);
+  // stacked_lr = ((unsigned long) hardfaultArgs[5]);
+  // stacked_pc = ((unsigned long) hardfaultArgs[6]);
+  // stacked_psr = ((unsigned long) hardfaultArgs[7]);
+
+
+  // UART_PRINT("[Hard fault handler]\n");
+  // UART_PRINT("R0 = %x\n", stacked_r0);
+  // UART_PRINT("R1 = %x\n", stacked_r1);
+  // UART_PRINT("R2 = %x\n", stacked_r2);
+  // UART_PRINT("R3 = %x\n", stacked_r3);
+  // UART_PRINT("R12 = %x\n", stacked_r12);
+  // UART_PRINT("LR = %x\n", stacked_lr);
+  // UART_PRINT("PC = %x\n", stacked_pc);
+  // UART_PRINT("PSR = %x\n", stacked_psr);
+  // UART_PRINT("BFAR = %x\n", (*((volatile unsigned int *)(0xE000ED38))));
+  // UART_PRINT("CFSR = %x\n", (*((volatile unsigned int *)(0xE000ED28))));
+  // UART_PRINT("HFSR = %x\n", (*((volatile unsigned int *)(0xE000ED2C))));
+  // UART_PRINT("DFSR = %x\n", (*((volatile unsigned int *)(0xE000ED30))));
+  // UART_PRINT("AFSR = %x\n", (*((volatile unsigned int *)(0xE000ED3C))));
+
+  // ledClearAll();
+  // ledSet(ERR_LED1, 1);
+  // ledSet(ERR_LED2, 1);
+  // powerStop();
+
+  // storeAssertHardfaultData(
+  //   stacked_r0,
+  //   stacked_r1,
+  //   stacked_r2,
+  //   stacked_r3,
+  //   stacked_r12,
+  //   stacked_lr,
+  //   stacked_pc,
+  //   stacked_psr);
+  // while (1)
+  // {}
 }
 /**
  * @brief  This function handles Memory Manage exception.
  */
 void DONT_DISCARD MemManage_Handler(void)
 {
-  /* Go to infinite loop when Memory Manage exception occurs */
-  ledClearAll();
-  ledSet(ERR_LED1, 1);
-  ledSet(ERR_LED2, 1);
-  powerStop();
-
-  storeAssertTextData("MemManage");
-  while (1)
-  {}
+  //COMMENTED FIRMWARE
+  // /* Go to infinite loop when Memory Manage exception occurs */
+  // ledClearAll();
+  // ledSet(ERR_LED1, 1);
+  // ledSet(ERR_LED2, 1);
+  // powerStop();
+
+  // storeAssertTextData("MemManage");
+  // while (1)
+  // {}
 }
 
 /**
@@ -167,15 +171,16 @@ void DONT_DISCARD MemManage_Handler(void)
  */
 void DONT_DISCARD BusFault_Handler(void)
 {
+  //COMMENTED FIRMWARE
   /* Go to infinite loop when Bus Fault exception occurs */
-  ledClearAll();
-  ledSet(ERR_LED1, 1);
-  ledSet(ERR_LED2, 1);
-  powerStop();
-
-  storeAssertTextData("BusFault");
-  while (1)
-  {}
+  // ledClearAll();
+  // ledSet(ERR_LED1, 1);
+  // ledSet(ERR_LED2, 1);
+  // powerStop();
+
+  // storeAssertTextData("BusFault");
+  // while (1)
+  // {}
 }
 
 /**
@@ -183,15 +188,16 @@ void DONT_DISCARD BusFault_Handler(void)
  */
 void DONT_DISCARD UsageFault_Handler(void)
 {
-  /* Go to infinite loop when Usage Fault exception occurs */
-  ledClearAll();
-  ledSet(ERR_LED1, 1);
-  ledSet(ERR_LED2, 1);
-  powerStop();
-
-  storeAssertTextData("UsageFault");
-  while (1)
-  {}
+  //COMMENTED FIRMWARE
+  // /* Go to infinite loop when Usage Fault exception occurs */
+  // ledClearAll();
+  // ledSet(ERR_LED1, 1);
+  // ledSet(ERR_LED2, 1);
+  // powerStop();
+
+  // storeAssertTextData("UsageFault");
+  // while (1)
+  // {}
 }
 
 /**
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pca9685.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pca9685.c
index abab44e8d..92a19eeee 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pca9685.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pca9685.c
@@ -92,8 +92,9 @@ static void durationToBytes(uint16_t duration, uint8_t *bytes)
 
 static uint16_t dutyToDuration(float duty)
 {
-  duty = fmax(duty, 0.0f);
-  duty = fmin(duty, 1.0f);
+  //COMMENTED FIRMWARE
+  // duty = fmax(duty, 0.0f);
+  // duty = fmin(duty, 1.0f);
   return duty * 4096.0f;
 }
 
@@ -177,55 +178,59 @@ STATIC_MEM_QUEUE_ALLOC(queue, 1, sizeof(struct asyncRequest));
 
 static void asyncTask(__attribute__((unused)) void *param)
 {
-  while (true) {
-    BaseType_t ok = xQueueReceive(queue, &reqPop, portMAX_DELAY);
-    if (ok == pdTRUE) {
-      // blocking message send.
-      pca9685setDurations(
-        reqPop.addr, reqPop.chanBegin, reqPop.nChan, reqPop.durations);
-    }
-  }
+
+  // while (true) {
+  //   BaseType_t ok = xQueueReceive(queue, &reqPop, portMAX_DELAY);
+  //   if (ok == pdTRUE) {
+  //     // blocking message send.
+  //     pca9685setDurations(
+  //       reqPop.addr, reqPop.chanBegin, reqPop.nChan, reqPop.durations);
+  //   }
+  // }
 }
 
 bool pca9685startAsyncTask()
 {
-  queue = STATIC_MEM_QUEUE_CREATE(queue);
-  if (queue == 0) {
-    return false;
-  }
+  //COMMENTED FIRMWARE
+  // queue = STATIC_MEM_QUEUE_CREATE(queue);
+  // if (queue == 0) {
+  //   return false;
+  // }
 
-  task = STATIC_MEM_TASK_CREATE(task, asyncTask, PCA9685_TASK_NAME, NULL, PCA9685_TASK_PRI);
+  // task = STATIC_MEM_TASK_CREATE(task, asyncTask, PCA9685_TASK_NAME, NULL, PCA9685_TASK_PRI);
   return true;
 }
 
 bool pca9685setDutiesAsync(
   int addr, int chanBegin, int nChan, float const *duties)
 {
-  struct asyncRequest reqPush = {
-    .addr = addr,
-    .chanBegin = chanBegin,
-    .nChan = nChan,
-  };
-  for (int i = 0; i < nChan; ++i) {
-    reqPush.durations[i] = dutyToDuration(duties[i]);
-  }
-  // drop message unless queue is empty!
-  xQueueSend(queue, &reqPush, 0);
+  //COMMENTED FIRMWARE
+  // struct asyncRequest reqPush = {
+  //   .addr = addr,
+  //   .chanBegin = chanBegin,
+  //   .nChan = nChan,
+  // };
+  // for (int i = 0; i < nChan; ++i) {
+  //   reqPush.durations[i] = dutyToDuration(duties[i]);
+  // }
+  // // drop message unless queue is empty!
+  // xQueueSend(queue, &reqPush, 0);
   return true;
 }
 
 bool pca9685setDurationsAsync(
   int addr, int chanBegin, int nChan, uint16_t const *durations)
 {
-  struct asyncRequest reqPush = {
-    .addr = addr,
-    .chanBegin = chanBegin,
-    .nChan = nChan,
-  };
-  for (int i = 0; i < nChan; ++i) {
-    reqPush.durations[i] = durations[i];
-  }
-  // drop message unless queue is empty!
-  xQueueSend(queue, &reqPush, 0);
+  //COMMENTED FIRMWARE
+  // struct asyncRequest reqPush = {
+  //   .addr = addr,
+  //   .chanBegin = chanBegin,
+  //   .nChan = nChan,
+  // };
+  // for (int i = 0; i < nChan; ++i) {
+  //   reqPush.durations[i] = durations[i];
+  // }
+  // // drop message unless queue is empty!
+  // xQueueSend(queue, &reqPush, 0);
   return true;
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/piezo.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/piezo.c
index e28ef7129..78acc40f6 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/piezo.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/piezo.c
@@ -71,61 +71,61 @@ void piezoInit()
 {
   if (isInit)
     return;
-
-  //Init structures
-  GPIO_InitTypeDef GPIO_InitStructure;
-  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
-  TIM_OCInitTypeDef  TIM_OCInitStructure;
-
-  //Clock the gpio and the timers
-  RCC_AHB1PeriphClockCmd(PIEZO_GPIO_POS_PERIF | PIEZO_GPIO_NEG_PERIF, ENABLE);
-  RCC_APB1PeriphClockCmd(PIEZO_TIM_PERIF, ENABLE);
-
-  // Configure the GPIO for the timer output
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
-  GPIO_InitStructure.GPIO_Pin = PIEZO_GPIO_POS_PIN;
-  GPIO_Init(PIEZO_GPIO_POS_PORT, &GPIO_InitStructure);
-  GPIO_InitStructure.GPIO_Pin = PIEZO_GPIO_NEG_PIN;
-  GPIO_Init(PIEZO_GPIO_NEG_PORT, &GPIO_InitStructure);
-
-  //Map timers to alternate functions
-  GPIO_PinAFConfig(PIEZO_GPIO_POS_PORT, PIEZO_GPIO_AF_POS_PIN, PIEZO_GPIO_AF_POS);
-  GPIO_PinAFConfig(PIEZO_GPIO_NEG_PORT, PIEZO_GPIO_AF_NEG_PIN, PIEZO_GPIO_AF_NEG);
-
-  //Timer configuration
-  TIM_TimeBaseStructure.TIM_Period = PIEZO_PWM_PERIOD;
-  TIM_TimeBaseStructure.TIM_Prescaler = PIEZO_PWM_PRESCALE;
-  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
-  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
-  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
-  TIM_TimeBaseInit(PIEZO_TIM, &TIM_TimeBaseStructure);
-
-  // PWM channels configuration
-  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
-  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
-  TIM_OCInitStructure.TIM_Pulse = 0;
-  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
-  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
-
-  // Configure OC3
-  TIM_OC3Init(PIEZO_TIM, &TIM_OCInitStructure);
-  TIM_OC3PreloadConfig(PIEZO_TIM, TIM_OCPreload_Enable);
-
-  // Configure OC4 inverted
-  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
-  TIM_OC4Init(PIEZO_TIM, &TIM_OCInitStructure);
-  TIM_OC4PreloadConfig(PIEZO_TIM, TIM_OCPreload_Enable);
-
-  //Enable the timer PWM outputs
-  TIM_CtrlPWMOutputs(PIEZO_TIM, ENABLE);
-  TIM_SetCompare3(PIEZO_TIM, 0x00);
-  TIM_SetCompare4(PIEZO_TIM, 0x00);
-
-  //Enable the timer
-  TIM_Cmd(PIEZO_TIM, ENABLE);
+  //COMMENTED FIRMWARE
+  // //Init structures
+  // GPIO_InitTypeDef GPIO_InitStructure;
+  // TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
+  // TIM_OCInitTypeDef  TIM_OCInitStructure;
+
+  // //Clock the gpio and the timers
+  // RCC_AHB1PeriphClockCmd(PIEZO_GPIO_POS_PERIF | PIEZO_GPIO_NEG_PERIF, ENABLE);
+  // RCC_APB1PeriphClockCmd(PIEZO_TIM_PERIF, ENABLE);
+
+  // // Configure the GPIO for the timer output
+  // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
+  // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+  // GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
+  // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
+  // GPIO_InitStructure.GPIO_Pin = PIEZO_GPIO_POS_PIN;
+  // GPIO_Init(PIEZO_GPIO_POS_PORT, &GPIO_InitStructure);
+  // GPIO_InitStructure.GPIO_Pin = PIEZO_GPIO_NEG_PIN;
+  // GPIO_Init(PIEZO_GPIO_NEG_PORT, &GPIO_InitStructure);
+
+  // //Map timers to alternate functions
+  // GPIO_PinAFConfig(PIEZO_GPIO_POS_PORT, PIEZO_GPIO_AF_POS_PIN, PIEZO_GPIO_AF_POS);
+  // GPIO_PinAFConfig(PIEZO_GPIO_NEG_PORT, PIEZO_GPIO_AF_NEG_PIN, PIEZO_GPIO_AF_NEG);
+
+  // //Timer configuration
+  // TIM_TimeBaseStructure.TIM_Period = PIEZO_PWM_PERIOD;
+  // TIM_TimeBaseStructure.TIM_Prescaler = PIEZO_PWM_PRESCALE;
+  // TIM_TimeBaseStructure.TIM_ClockDivision = 0;
+  // TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
+  // TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
+  // TIM_TimeBaseInit(PIEZO_TIM, &TIM_TimeBaseStructure);
+
+  // // PWM channels configuration
+  // TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
+  // TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
+  // TIM_OCInitStructure.TIM_Pulse = 0;
+  // TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
+  // TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
+
+  // // Configure OC3
+  // TIM_OC3Init(PIEZO_TIM, &TIM_OCInitStructure);
+  // TIM_OC3PreloadConfig(PIEZO_TIM, TIM_OCPreload_Enable);
+
+  // // Configure OC4 inverted
+  // TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
+  // TIM_OC4Init(PIEZO_TIM, &TIM_OCInitStructure);
+  // TIM_OC4PreloadConfig(PIEZO_TIM, TIM_OCPreload_Enable);
+
+  // //Enable the timer PWM outputs
+  // TIM_CtrlPWMOutputs(PIEZO_TIM, ENABLE);
+  // TIM_SetCompare3(PIEZO_TIM, 0x00);
+  // TIM_SetCompare4(PIEZO_TIM, 0x00);
+
+  // //Enable the timer
+  // TIM_Cmd(PIEZO_TIM, ENABLE);
 
   isInit = true;
 }
@@ -137,11 +137,13 @@ bool piezoTest(void)
 
 void piezoSetRatio(uint8_t ratio)
 {
-  TIM_SetCompare3(PIEZO_TIM, ratio);
-  TIM_SetCompare4(PIEZO_TIM, ratio);
+  //COMMENTED FIRMWARE
+  // TIM_SetCompare3(PIEZO_TIM, ratio);
+  // TIM_SetCompare4(PIEZO_TIM, ratio);
 }
 
 void piezoSetFreq(uint16_t freq)
 {
-  TIM_PrescalerConfig(PIEZO_TIM, (PIEZO_BASE_FREQ/freq), TIM_PSCReloadMode_Update);
+  //COMMENTED FIRMWARE
+  //TIM_PrescalerConfig(PIEZO_TIM, (PIEZO_BASE_FREQ/freq), TIM_PSCReloadMode_Update);
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pmw3901.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pmw3901.c
index 111af0eca..4777db247 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pmw3901.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/pmw3901.c
@@ -41,133 +41,136 @@ static bool isInit = false;
 
 static void registerWrite(const deckPin_t csPin, uint8_t reg, uint8_t value)
 {
-  // Set MSB to 1 for write
-  reg |= 0x80u;
+  //COMMENTED FIRMWARE
+  // // Set MSB to 1 for write
+  // reg |= 0x80u;
 
-  spiBeginTransaction(SPI_BAUDRATE_2MHZ);
-  digitalWrite(csPin, LOW);
+  // spiBeginTransaction(SPI_BAUDRATE_2MHZ);
+  // digitalWrite(csPin, LOW);
 
-  sleepus(50);
+  // sleepus(50);
 
-  spiExchange(1, &reg, &reg);
-  sleepus(50);
-  spiExchange(1, &value, &value);
+  // spiExchange(1, &reg, &reg);
+  // sleepus(50);
+  // spiExchange(1, &value, &value);
 
-  sleepus(50);
+  // sleepus(50);
 
-  digitalWrite(csPin, HIGH);
-  spiEndTransaction();
-  sleepus(200);
+  // digitalWrite(csPin, HIGH);
+  // spiEndTransaction();
+  // sleepus(200);
 }
 
 static uint8_t registerRead(const deckPin_t csPin, uint8_t reg)
 {
   uint8_t data = 0;
-  uint8_t dummy = 0;
+  //COMMENTED FIRMWARE
+  // uint8_t dummy = 0;
 
-  // Set MSB to 0 for read
-  reg &= ~0x80u;
+  // // Set MSB to 0 for read
+  // reg &= ~0x80u;
 
-  spiBeginTransaction(SPI_BAUDRATE_2MHZ);
-  digitalWrite(csPin, LOW);
+  // spiBeginTransaction(SPI_BAUDRATE_2MHZ);
+  // digitalWrite(csPin, LOW);
 
-  sleepus(50);
+  // sleepus(50);
 
-  spiExchange(1, &reg, &reg);
-  sleepus(500);
-  spiExchange(1, &dummy, &data);
+  // spiExchange(1, &reg, &reg);
+  // sleepus(500);
+  // spiExchange(1, &dummy, &data);
 
-  sleepus(50);
+  // sleepus(50);
 
-  digitalWrite(csPin, HIGH);
-  spiEndTransaction();
-  sleepus(200);
+  // digitalWrite(csPin, HIGH);
+  // spiEndTransaction();
+  // sleepus(200);
 
   return data;
 }
 
 static void InitRegisters(const deckPin_t csPin)
 {
-  registerWrite(csPin, 0x7F, 0x00);
-  registerWrite(csPin, 0x61, 0xAD);
-  registerWrite(csPin, 0x7F, 0x03);
-  registerWrite(csPin, 0x40, 0x00);
-  registerWrite(csPin, 0x7F, 0x05);
-  registerWrite(csPin, 0x41, 0xB3);
-  registerWrite(csPin, 0x43, 0xF1);
-  registerWrite(csPin, 0x45, 0x14);
-  registerWrite(csPin, 0x5B, 0x32);
-  registerWrite(csPin, 0x5F, 0x34);
-  registerWrite(csPin, 0x7B, 0x08);
-  registerWrite(csPin, 0x7F, 0x06);
-  registerWrite(csPin, 0x44, 0x1B);
-  registerWrite(csPin, 0x40, 0xBF);
-  registerWrite(csPin, 0x4E, 0x3F);
-  registerWrite(csPin, 0x7F, 0x08);
-  registerWrite(csPin, 0x65, 0x20);
-  registerWrite(csPin, 0x6A, 0x18);
-  registerWrite(csPin, 0x7F, 0x09);
-  registerWrite(csPin, 0x4F, 0xAF);
-  registerWrite(csPin, 0x5F, 0x40);
-  registerWrite(csPin, 0x48, 0x80);
-  registerWrite(csPin, 0x49, 0x80);
-  registerWrite(csPin, 0x57, 0x77);
-  registerWrite(csPin, 0x60, 0x78);
-  registerWrite(csPin, 0x61, 0x78);
-  registerWrite(csPin, 0x62, 0x08);
-  registerWrite(csPin, 0x63, 0x50);
-  registerWrite(csPin, 0x7F, 0x0A);
-  registerWrite(csPin, 0x45, 0x60);
-  registerWrite(csPin, 0x7F, 0x00);
-  registerWrite(csPin, 0x4D, 0x11);
-  registerWrite(csPin, 0x55, 0x80);
-  registerWrite(csPin, 0x74, 0x1F);
-  registerWrite(csPin, 0x75, 0x1F);
-  registerWrite(csPin, 0x4A, 0x78);
-  registerWrite(csPin, 0x4B, 0x78);
-  registerWrite(csPin, 0x44, 0x08);
-  registerWrite(csPin, 0x45, 0x50);
-  registerWrite(csPin, 0x64, 0xFF);
-  registerWrite(csPin, 0x65, 0x1F);
-  registerWrite(csPin, 0x7F, 0x14);
-  registerWrite(csPin, 0x65, 0x67);
-  registerWrite(csPin, 0x66, 0x08);
-  registerWrite(csPin, 0x63, 0x70);
-  registerWrite(csPin, 0x7F, 0x15);
-  registerWrite(csPin, 0x48, 0x48);
-  registerWrite(csPin, 0x7F, 0x07);
-  registerWrite(csPin, 0x41, 0x0D);
-  registerWrite(csPin, 0x43, 0x14);
-  registerWrite(csPin, 0x4B, 0x0E);
-  registerWrite(csPin, 0x45, 0x0F);
-  registerWrite(csPin, 0x44, 0x42);
-  registerWrite(csPin, 0x4C, 0x80);
-  registerWrite(csPin, 0x7F, 0x10);
-  registerWrite(csPin, 0x5B, 0x02);
-  registerWrite(csPin, 0x7F, 0x07);
-  registerWrite(csPin, 0x40, 0x41);
-  registerWrite(csPin, 0x70, 0x00);
-
-  vTaskDelay(M2T(10)); // delay 10ms
-
-  registerWrite(csPin, 0x32, 0x44);
-  registerWrite(csPin, 0x7F, 0x07);
-  registerWrite(csPin, 0x40, 0x40);
-  registerWrite(csPin, 0x7F, 0x06);
-  registerWrite(csPin, 0x62, 0xF0);
-  registerWrite(csPin, 0x63, 0x00);
-  registerWrite(csPin, 0x7F, 0x0D);
-  registerWrite(csPin, 0x48, 0xC0);
-  registerWrite(csPin, 0x6F, 0xD5);
-  registerWrite(csPin, 0x7F, 0x00);
-  registerWrite(csPin, 0x5B, 0xA0);
-  registerWrite(csPin, 0x4E, 0xA8);
-  registerWrite(csPin, 0x5A, 0x50);
-  registerWrite(csPin, 0x40, 0x80);
-
-  registerWrite(csPin, 0x7F, 0x00);
-  registerWrite(csPin, 0x5A, 0x10);
-  registerWrite(csPin, 0x54, 0x00);
+  //COMMENTED FIRMWARE
+  // registerWrite(csPin, 0x7F, 0x00);
+  // registerWrite(csPin, 0x61, 0xAD);
+  // registerWrite(csPin, 0x7F, 0x03);
+  // registerWrite(csPin, 0x40, 0x00);
+  // registerWrite(csPin, 0x7F, 0x05);
+  // registerWrite(csPin, 0x41, 0xB3);
+  // registerWrite(csPin, 0x43, 0xF1);
+  // registerWrite(csPin, 0x45, 0x14);
+  // registerWrite(csPin, 0x5B, 0x32);
+  // registerWrite(csPin, 0x5F, 0x34);
+  // registerWrite(csPin, 0x7B, 0x08);
+  // registerWrite(csPin, 0x7F, 0x06);
+  // registerWrite(csPin, 0x44, 0x1B);
+  // registerWrite(csPin, 0x40, 0xBF);
+  // registerWrite(csPin, 0x4E, 0x3F);
+  // registerWrite(csPin, 0x7F, 0x08);
+  // registerWrite(csPin, 0x65, 0x20);
+  // registerWrite(csPin, 0x6A, 0x18);
+  // registerWrite(csPin, 0x7F, 0x09);
+  // registerWrite(csPin, 0x4F, 0xAF);
+  // registerWrite(csPin, 0x5F, 0x40);
+  // registerWrite(csPin, 0x48, 0x80);
+  // registerWrite(csPin, 0x49, 0x80);
+  // registerWrite(csPin, 0x57, 0x77);
+  // registerWrite(csPin, 0x60, 0x78);
+  // registerWrite(csPin, 0x61, 0x78);
+  // registerWrite(csPin, 0x62, 0x08);
+  // registerWrite(csPin, 0x63, 0x50);
+  // registerWrite(csPin, 0x7F, 0x0A);
+  // registerWrite(csPin, 0x45, 0x60);
+  // registerWrite(csPin, 0x7F, 0x00);
+  // registerWrite(csPin, 0x4D, 0x11);
+  // registerWrite(csPin, 0x55, 0x80);
+  // registerWrite(csPin, 0x74, 0x1F);
+  // registerWrite(csPin, 0x75, 0x1F);
+  // registerWrite(csPin, 0x4A, 0x78);
+  // registerWrite(csPin, 0x4B, 0x78);
+  // registerWrite(csPin, 0x44, 0x08);
+  // registerWrite(csPin, 0x45, 0x50);
+  // registerWrite(csPin, 0x64, 0xFF);
+  // registerWrite(csPin, 0x65, 0x1F);
+  // registerWrite(csPin, 0x7F, 0x14);
+  // registerWrite(csPin, 0x65, 0x67);
+  // registerWrite(csPin, 0x66, 0x08);
+  // registerWrite(csPin, 0x63, 0x70);
+  // registerWrite(csPin, 0x7F, 0x15);
+  // registerWrite(csPin, 0x48, 0x48);
+  // registerWrite(csPin, 0x7F, 0x07);
+  // registerWrite(csPin, 0x41, 0x0D);
+  // registerWrite(csPin, 0x43, 0x14);
+  // registerWrite(csPin, 0x4B, 0x0E);
+  // registerWrite(csPin, 0x45, 0x0F);
+  // registerWrite(csPin, 0x44, 0x42);
+  // registerWrite(csPin, 0x4C, 0x80);
+  // registerWrite(csPin, 0x7F, 0x10);
+  // registerWrite(csPin, 0x5B, 0x02);
+  // registerWrite(csPin, 0x7F, 0x07);
+  // registerWrite(csPin, 0x40, 0x41);
+  // registerWrite(csPin, 0x70, 0x00);
+
+  // vTaskDelay(M2T(10)); // delay 10ms
+
+  // registerWrite(csPin, 0x32, 0x44);
+  // registerWrite(csPin, 0x7F, 0x07);
+  // registerWrite(csPin, 0x40, 0x40);
+  // registerWrite(csPin, 0x7F, 0x06);
+  // registerWrite(csPin, 0x62, 0xF0);
+  // registerWrite(csPin, 0x63, 0x00);
+  // registerWrite(csPin, 0x7F, 0x0D);
+  // registerWrite(csPin, 0x48, 0xC0);
+  // registerWrite(csPin, 0x6F, 0xD5);
+  // registerWrite(csPin, 0x7F, 0x00);
+  // registerWrite(csPin, 0x5B, 0xA0);
+  // registerWrite(csPin, 0x4E, 0xA8);
+  // registerWrite(csPin, 0x5A, 0x50);
+  // registerWrite(csPin, 0x40, 0x80);
+
+  // registerWrite(csPin, 0x7F, 0x00);
+  // registerWrite(csPin, 0x5A, 0x10);
+  // registerWrite(csPin, 0x54, 0x00);
 }
 
 bool pmw3901Init(const deckPin_t csPin)
@@ -175,64 +178,65 @@ bool pmw3901Init(const deckPin_t csPin)
   if (isInit) {
     return true;
   }
+  //COMMENTED FIRMWARE
+  // // Initialize CS Pin
+  // pinMode(csPin, OUTPUT);
+  // digitalWrite(csPin, HIGH);
 
-  // Initialize CS Pin
-  pinMode(csPin, OUTPUT);
-  digitalWrite(csPin, HIGH);
+  // spiBegin();
+  // vTaskDelay(M2T(40));
 
-  spiBegin();
-  vTaskDelay(M2T(40));
+  // digitalWrite(csPin, HIGH);
+  // vTaskDelay(M2T(2));
+  // digitalWrite(csPin, LOW);
+  // vTaskDelay(M2T(2));
+  // digitalWrite(csPin, HIGH);
+  // vTaskDelay(M2T(2));
 
-  digitalWrite(csPin, HIGH);
-  vTaskDelay(M2T(2));
-  digitalWrite(csPin, LOW);
-  vTaskDelay(M2T(2));
-  digitalWrite(csPin, HIGH);
-  vTaskDelay(M2T(2));
+  // uint8_t chipId    = registerRead(csPin, 0x00);
+  // uint8_t invChipId = registerRead(csPin, 0x5f);
 
-  uint8_t chipId    = registerRead(csPin, 0x00);
-  uint8_t invChipId = registerRead(csPin, 0x5f);
+  // DEBUG_PRINT("Motion chip id: 0x%x:0x%x\n", chipId, invChipId);
 
-  DEBUG_PRINT("Motion chip id: 0x%x:0x%x\n", chipId, invChipId);
+  // if (chipId == 0x49 && invChipId == 0xB6)
+  // {
+  //   // Power on reset
+  //   registerWrite(csPin, 0x3a, 0x5a);
+  //   vTaskDelay(M2T(5));
 
-  if (chipId == 0x49 && invChipId == 0xB6)
-  {
-    // Power on reset
-    registerWrite(csPin, 0x3a, 0x5a);
-    vTaskDelay(M2T(5));
+  //   // Reading the motion registers one time
+  //   registerRead(csPin, 0x02);
+  //   registerRead(csPin, 0x03);
+  //   registerRead(csPin, 0x04);
+  //   registerRead(csPin, 0x05);
+  //   registerRead(csPin, 0x06);
+  //   vTaskDelay(M2T(1));
 
-    // Reading the motion registers one time
-    registerRead(csPin, 0x02);
-    registerRead(csPin, 0x03);
-    registerRead(csPin, 0x04);
-    registerRead(csPin, 0x05);
-    registerRead(csPin, 0x06);
-    vTaskDelay(M2T(1));
+  //   InitRegisters(csPin);
 
-    InitRegisters(csPin);
-
-    isInit = true;
-  }
+  //   isInit = true;
+  // }
 
   return isInit;
 }
 
 void pmw3901ReadMotion(const deckPin_t csPin, motionBurst_t * motion)
 {
-  uint8_t address = 0x16;
-
-  spiBeginTransaction(SPI_BAUDRATE_2MHZ);
-  digitalWrite(csPin,LOW);
-  sleepus(50);
-  spiExchange(1, &address, &address);
-  sleepus(50);
-  spiExchange(sizeof(motionBurst_t), (uint8_t*)motion, (uint8_t*)motion);
-  sleepus(50);
-  digitalWrite(csPin, HIGH);
-  spiEndTransaction();
-  sleepus(50);
-
-  uint16_t realShutter = (motion->shutter >> 8) & 0x0FF;
-  realShutter |= (motion->shutter & 0x0ff) << 8;
-  motion->shutter = realShutter;
+  //COMMENTED FIRMWARE
+  // uint8_t address = 0x16;
+
+  // spiBeginTransaction(SPI_BAUDRATE_2MHZ);
+  // digitalWrite(csPin,LOW);
+  // sleepus(50);
+  // spiExchange(1, &address, &address);
+  // sleepus(50);
+  // spiExchange(sizeof(motionBurst_t), (uint8_t*)motion, (uint8_t*)motion);
+  // sleepus(50);
+  // digitalWrite(csPin, HIGH);
+  // spiEndTransaction();
+  // sleepus(50);
+
+  // uint16_t realShutter = (motion->shutter >> 8) & 0x0FF;
+  // realShutter |= (motion->shutter & 0x0ff) << 8;
+  // motion->shutter = realShutter;
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/swd.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/swd.c
index bccba0424..a553065d7 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/swd.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/swd.c
@@ -53,49 +53,50 @@ static bool isInit = false;
 
 
 static void initGPIO(void) {
-  GPIO_InitTypeDef GPIO_InitStructure;
+  //COMMENTED FIRMWARE
+  // GPIO_InitTypeDef GPIO_InitStructure;
 
-  SWD_SPI_CLK_INIT(SWD_SPI_CLK, ENABLE);
+  // SWD_SPI_CLK_INIT(SWD_SPI_CLK, ENABLE);
 
-  RCC_AHB1PeriphClockCmd(SWD_SPI_SCK_GPIO_CLK | SWD_SPI_MISO_GPIO_CLK, ENABLE);
+  // RCC_AHB1PeriphClockCmd(SWD_SPI_SCK_GPIO_CLK | SWD_SPI_MISO_GPIO_CLK, ENABLE);
 
-  GPIO_PinAFConfig(SWD_SPI_SCK_GPIO_PORT, SWD_SPI_SCK_SOURCE, SWD_SPI_SCK_AF);
-  GPIO_PinAFConfig(SWD_SPI_MISO_GPIO_PORT, SWD_SPI_MISO_SOURCE, SWD_SPI_MISO_AF);
+  // GPIO_PinAFConfig(SWD_SPI_SCK_GPIO_PORT, SWD_SPI_SCK_SOURCE, SWD_SPI_SCK_AF);
+  // GPIO_PinAFConfig(SWD_SPI_MISO_GPIO_PORT, SWD_SPI_MISO_SOURCE, SWD_SPI_MISO_AF);
 
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
+  // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
+  // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+  // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+  // GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
 
-  GPIO_InitStructure.GPIO_Pin = SWD_SPI_SCK_PIN;
-  GPIO_Init(SWD_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
+  // GPIO_InitStructure.GPIO_Pin = SWD_SPI_SCK_PIN;
+  // GPIO_Init(SWD_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
 
-  /* In bi-directional mode only MISO is used */
-  GPIO_InitStructure.GPIO_Pin =  SWD_SPI_MISO_PIN;
-  GPIO_Init(SWD_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
+  // /* In bi-directional mode only MISO is used */
+  // GPIO_InitStructure.GPIO_Pin =  SWD_SPI_MISO_PIN;
+  // GPIO_Init(SWD_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
 
 }
 
 static void initSPI(void) {
+  //COMMENTED FIRMWARE
+  // SPI_InitTypeDef  SPI_InitStructure;
 
-  SPI_InitTypeDef  SPI_InitStructure;
+  // initGPIO();
 
-  initGPIO();
+  // /* Set up SPI in bi-directional mode */
+  // SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
+  // SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
+  // SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
+  // SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
+  // SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
+  // SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
+  // SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
 
-  /* Set up SPI in bi-directional mode */
-  SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
-  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
-  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
-  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
-  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
-  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
-  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
+  // SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
+  // SPI_InitStructure.SPI_CRCPolynomial = 7;
+  // SPI_Init(SWD_SPI, &SPI_InitStructure);
 
-  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
-  SPI_InitStructure.SPI_CRCPolynomial = 7;
-  SPI_Init(SWD_SPI, &SPI_InitStructure);
-
-  SPI_Cmd(SWD_SPI, ENABLE);
+  // SPI_Cmd(SWD_SPI, ENABLE);
 }
 
 //Initialize the green led pin as output
@@ -103,8 +104,8 @@ void swdInit()
 {
   if(isInit)
     return;
-
-  initSPI();
+  //COMMENTED FIRMWARE
+  // initSPI();
 
   isInit = true;
 }
@@ -141,64 +142,64 @@ bool swdTest(void) {
   // Should read out (and does):0x0BB11477 (according to OpenOCD)
   //T ACK |------------DATA--------------|P
   //? 100 111011100010100010001101110100001
-
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-#if 0
-  tx_data[idx++] = 0x9E;
-  tx_data[idx++] = 0xE7;
-#else
-  tx_data[idx++] = 0x79;
-  tx_data[idx++] = 0xE7;
-#endif
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFF;
-  tx_data[idx++] = 0xFC;
-  tx_data[idx++] = header;
-  // Rest is 0x00
-
-  /* As long as the SPI is enabled in bi-di mode the clock is enabled. So
-   * we write data as normal, but when reading there's no need to output any
-   * data to trigger the clock. Direction needs to be set accordingly.
-   */
-
-  while(number_of_txd_bytes < transfer_size)
-  {
-    if (number_of_txd_bytes < idx)
-    {
-      SPI_BiDirectionalLineConfig(SWD_SPI, SPI_Direction_Tx);
-
-      /*!< Loop while DR register in not emplty */
-      while (SPI_I2S_GetFlagStatus(SWD_SPI, SPI_I2S_FLAG_TXE) == RESET);
-
-      SPI_I2S_SendData(SWD_SPI, tx_data[number_of_txd_bytes]);
-
-      // Make sure that we have sent data in case next loop will be RX, the
-      // mode is switched before we manage to send the data!
-      while (SPI_I2S_GetFlagStatus(SWD_SPI, SPI_I2S_FLAG_BSY) == SET);
-    }
-    else
-    {
-      SPI_BiDirectionalLineConfig(SWD_SPI, SPI_Direction_Rx);
-      while (SPI_I2S_GetFlagStatus(SWD_SPI, SPI_I2S_FLAG_RXNE) == RESET);
-
-      /*!< Return the byte read from the SPI bus */
-      rx_data[number_of_txd_bytes] = (uint8_t) SPI_I2S_ReceiveData(SWD_SPI);
-    }
-    number_of_txd_bytes++;
-  }
-  SPI_Cmd(SWD_SPI, DISABLE);
+//COMMENTED FIRMWARE
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+// #if 0
+//   tx_data[idx++] = 0x9E;
+//   tx_data[idx++] = 0xE7;
+// #else
+//   tx_data[idx++] = 0x79;
+//   tx_data[idx++] = 0xE7;
+// #endif
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFF;
+//   tx_data[idx++] = 0xFC;
+//   tx_data[idx++] = header;
+//   // Rest is 0x00
+
+//   /* As long as the SPI is enabled in bi-di mode the clock is enabled. So
+//    * we write data as normal, but when reading there's no need to output any
+//    * data to trigger the clock. Direction needs to be set accordingly.
+//    */
+
+//   while(number_of_txd_bytes < transfer_size)
+//   {
+//     if (number_of_txd_bytes < idx)
+//     {
+//       SPI_BiDirectionalLineConfig(SWD_SPI, SPI_Direction_Tx);
+
+//       /*!< Loop while DR register in not emplty */
+//       while (SPI_I2S_GetFlagStatus(SWD_SPI, SPI_I2S_FLAG_TXE) == RESET);
+
+//       SPI_I2S_SendData(SWD_SPI, tx_data[number_of_txd_bytes]);
+
+//       // Make sure that we have sent data in case next loop will be RX, the
+//       // mode is switched before we manage to send the data!
+//       while (SPI_I2S_GetFlagStatus(SWD_SPI, SPI_I2S_FLAG_BSY) == SET);
+//     }
+//     else
+//     {
+//       SPI_BiDirectionalLineConfig(SWD_SPI, SPI_Direction_Rx);
+//       while (SPI_I2S_GetFlagStatus(SWD_SPI, SPI_I2S_FLAG_RXNE) == RESET);
+
+//       /*!< Return the byte read from the SPI bus */
+//       rx_data[number_of_txd_bytes] = (uint8_t) SPI_I2S_ReceiveData(SWD_SPI);
+//     }
+//     number_of_txd_bytes++;
+//   }
+//   SPI_Cmd(SWD_SPI, DISABLE);
   return isInit;
 }
 
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart1.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart1.c
index 213cce235..dabca42bb 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart1.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart1.c
@@ -109,74 +109,76 @@ static void uart1DmaInit(void)
 }
 
 void uart1Init(const uint32_t baudrate) {
-  uart1InitWithParity(baudrate, uart1ParityNone);
+  //COMMENTED FIRMWARE
+  //uart1InitWithParity(baudrate, uart1ParityNone);
 }
 
 void uart1InitWithParity(const uint32_t baudrate, const uart1Parity_t parity)
 {
+  //COMMENTED FIRMWARE
 
-  USART_InitTypeDef USART_InitStructure;
-  GPIO_InitTypeDef GPIO_InitStructure;
-  NVIC_InitTypeDef NVIC_InitStructure;
+  // USART_InitTypeDef USART_InitStructure;
+  // GPIO_InitTypeDef GPIO_InitStructure;
+  // NVIC_InitTypeDef NVIC_InitStructure;
 
-  /* Enable GPIO and USART clock */
-  RCC_AHB1PeriphClockCmd(UART1_GPIO_PERIF, ENABLE);
-  ENABLE_UART1_RCC(UART1_PERIF, ENABLE);
-
-  /* Configure USART Rx as input floating */
-  GPIO_InitStructure.GPIO_Pin   = UART1_GPIO_RX_PIN;
-  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
-  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
-  GPIO_Init(UART1_GPIO_PORT, &GPIO_InitStructure);
-
-  /* Configure USART Tx as alternate function */
-  GPIO_InitStructure.GPIO_Pin   = UART1_GPIO_TX_PIN;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
-  GPIO_Init(UART1_GPIO_PORT, &GPIO_InitStructure);
-
-  //Map uart to alternate functions
-  GPIO_PinAFConfig(UART1_GPIO_PORT, UART1_GPIO_AF_TX_PIN, UART1_GPIO_AF_TX);
-  GPIO_PinAFConfig(UART1_GPIO_PORT, UART1_GPIO_AF_RX_PIN, UART1_GPIO_AF_RX);
-
-  USART_InitStructure.USART_BaudRate            = baudrate;
-  USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
-  if (parity == uart1ParityEven || parity == uart1ParityOdd) {
-    USART_InitStructure.USART_WordLength        = USART_WordLength_9b;
-  } else {
-    USART_InitStructure.USART_WordLength        = USART_WordLength_8b;
-  }
+  // /* Enable GPIO and USART clock */
+  // RCC_AHB1PeriphClockCmd(UART1_GPIO_PERIF, ENABLE);
+  // ENABLE_UART1_RCC(UART1_PERIF, ENABLE);
 
-  USART_InitStructure.USART_StopBits            = USART_StopBits_1;
+  // /* Configure USART Rx as input floating */
+  // GPIO_InitStructure.GPIO_Pin   = UART1_GPIO_RX_PIN;
+  // GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
+  // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
+  // GPIO_Init(UART1_GPIO_PORT, &GPIO_InitStructure);
 
-  if (parity == uart1ParityEven) {
-    USART_InitStructure.USART_Parity            = USART_Parity_Even;
-  } else if (parity == uart1ParityOdd) {
-    USART_InitStructure.USART_Parity            = USART_Parity_Odd;
-  } else {
-    USART_InitStructure.USART_Parity            = USART_Parity_No;
-  }
+  // /* Configure USART Tx as alternate function */
+  // GPIO_InitStructure.GPIO_Pin   = UART1_GPIO_TX_PIN;
+  // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
+  // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+  // GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
+  // GPIO_Init(UART1_GPIO_PORT, &GPIO_InitStructure);
 
-  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
-  USART_Init(UART1_TYPE, &USART_InitStructure);
+  // //Map uart to alternate functions
+  // GPIO_PinAFConfig(UART1_GPIO_PORT, UART1_GPIO_AF_TX_PIN, UART1_GPIO_AF_TX);
+  // GPIO_PinAFConfig(UART1_GPIO_PORT, UART1_GPIO_AF_RX_PIN, UART1_GPIO_AF_RX);
 
-  uart1DmaInit();
+  // USART_InitStructure.USART_BaudRate            = baudrate;
+  // USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
+  // if (parity == uart1ParityEven || parity == uart1ParityOdd) {
+  //   USART_InitStructure.USART_WordLength        = USART_WordLength_9b;
+  // } else {
+  //   USART_InitStructure.USART_WordLength        = USART_WordLength_8b;
+  // }
 
-  NVIC_InitStructure.NVIC_IRQChannel = UART1_IRQ;
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_MID_PRI;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
+  // USART_InitStructure.USART_StopBits            = USART_StopBits_1;
+
+  // if (parity == uart1ParityEven) {
+  //   USART_InitStructure.USART_Parity            = USART_Parity_Even;
+  // } else if (parity == uart1ParityOdd) {
+  //   USART_InitStructure.USART_Parity            = USART_Parity_Odd;
+  // } else {
+  //   USART_InitStructure.USART_Parity            = USART_Parity_No;
+  // }
+
+  // USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
+  // USART_Init(UART1_TYPE, &USART_InitStructure);
 
-  uart1queue = STATIC_MEM_QUEUE_CREATE(uart1queue);
+  // uart1DmaInit();
 
-  USART_ITConfig(UART1_TYPE, USART_IT_RXNE, ENABLE);
+  // NVIC_InitStructure.NVIC_IRQChannel = UART1_IRQ;
+  // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_MID_PRI;
+  // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+  // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+  // NVIC_Init(&NVIC_InitStructure);
 
-  //Enable UART
-  USART_Cmd(UART1_TYPE, ENABLE);
+  // uart1queue = STATIC_MEM_QUEUE_CREATE(uart1queue);
 
-  USART_ITConfig(UART1_TYPE, USART_IT_RXNE, ENABLE);
+  // USART_ITConfig(UART1_TYPE, USART_IT_RXNE, ENABLE);
+
+  // //Enable UART
+  // USART_Cmd(UART1_TYPE, ENABLE);
+
+  // USART_ITConfig(UART1_TYPE, USART_IT_RXNE, ENABLE);
 
   isInit = true;
 }
@@ -204,16 +206,17 @@ bool uart1GetDataWithDefaultTimeout(uint8_t *c)
 
 void uart1SendData(uint32_t size, uint8_t* data)
 {
-  uint32_t i;
+  //COMMENTED FIRMWARE
+  // uint32_t i;
 
-  if (!isInit)
-    return;
+  // if (!isInit)
+  //   return;
 
-  for(i = 0; i < size; i++)
-  {
-    while (!(UART1_TYPE->SR & USART_FLAG_TXE));
-    UART1_TYPE->DR = (data[i] & 0x00FF);
-  }
+  // for(i = 0; i < size; i++)
+  // {
+  //   while (!(UART1_TYPE->SR & USART_FLAG_TXE));
+  //   UART1_TYPE->DR = (data[i] & 0x00FF);
+  // }
 }
 
 #ifdef ENABLE_UART1_DMA
@@ -246,7 +249,8 @@ void uart1SendDataDmaBlocking(uint32_t size, uint8_t* data)
 
 int uart1Putchar(int ch)
 {
-    uart1SendData(1, (uint8_t *)&ch);
+    //COMMENTED FIRMWARE
+    //uart1SendData(1, (uint8_t *)&ch);
 
     return (unsigned char)ch;
 }
@@ -281,22 +285,23 @@ void __attribute__((used)) DMA1_Stream3_IRQHandler(void)
 
 void __attribute__((used)) USART3_IRQHandler(void)
 {
-  uint8_t rxData;
-  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
-  if (USART_GetITStatus(UART1_TYPE, USART_IT_RXNE))
-  {
-    rxData = USART_ReceiveData(UART1_TYPE) & 0x00FF;
-    xQueueSendFromISR(uart1queue, &rxData, &xHigherPriorityTaskWoken);
-  } else {
-    /** if we get here, the error is most likely caused by an overrun!
-     * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun error)
-     * - and IDLE (Idle line detected) pending bits are cleared by software sequence:
-     * - reading USART_SR register followed reading the USART_DR register.
-     */
-    asm volatile ("" : "=m" (UART1_TYPE->SR) : "r" (UART1_TYPE->SR)); // force non-optimizable reads
-    asm volatile ("" : "=m" (UART1_TYPE->DR) : "r" (UART1_TYPE->DR)); // of these two registers
-
-    hasOverrun = true;
-  }
+  //COMMENTED FIRMWARE
+  // uint8_t rxData;
+  // portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+  // if (USART_GetITStatus(UART1_TYPE, USART_IT_RXNE))
+  // {
+  //   rxData = USART_ReceiveData(UART1_TYPE) & 0x00FF;
+  //   xQueueSendFromISR(uart1queue, &rxData, &xHigherPriorityTaskWoken);
+  // } else {
+  //   /** if we get here, the error is most likely caused by an overrun!
+  //    * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun error)
+  //    * - and IDLE (Idle line detected) pending bits are cleared by software sequence:
+  //    * - reading USART_SR register followed reading the USART_DR register.
+  //    */
+  //   asm volatile ("" : "=m" (UART1_TYPE->SR) : "r" (UART1_TYPE->SR)); // force non-optimizable reads
+  //   asm volatile ("" : "=m" (UART1_TYPE->DR) : "r" (UART1_TYPE->DR)); // of these two registers
+
+  //   hasOverrun = true;
+  // }
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart2.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart2.c
index 53419a3ae..3eca14c49 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart2.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart2.c
@@ -83,111 +83,113 @@ static bool hasOverrun = false;
   */
 static void uart2DmaInit(void)
 {
-  NVIC_InitTypeDef NVIC_InitStructure;
-
-  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
-
-  // USART TX DMA Channel Config
-  DMA_InitStructureShare.DMA_PeripheralBaseAddr = (uint32_t)&UART2_TYPE->DR;
-  DMA_InitStructureShare.DMA_Memory0BaseAddr = (uint32_t)dmaBuffer;
-  DMA_InitStructureShare.DMA_MemoryInc = DMA_MemoryInc_Enable;
-  DMA_InitStructureShare.DMA_MemoryBurst = DMA_MemoryBurst_Single;
-  DMA_InitStructureShare.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
-  DMA_InitStructureShare.DMA_BufferSize = 0;
-  DMA_InitStructureShare.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-  DMA_InitStructureShare.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
-  DMA_InitStructureShare.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
-  DMA_InitStructureShare.DMA_DIR = DMA_DIR_MemoryToPeripheral;
-  DMA_InitStructureShare.DMA_Mode = DMA_Mode_Normal;
-  DMA_InitStructureShare.DMA_FIFOMode = DMA_FIFOMode_Disable;
-  DMA_InitStructureShare.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull ;
-  DMA_InitStructureShare.DMA_Channel = UART2_DMA_CH;
-  #ifdef UART2_LINK_COMM
-  DMA_InitStructureShare.DMA_Priority = DMA_Priority_High;
-  #else
-  DMA_InitStructureShare.DMA_Priority = DMA_Priority_Low;
-  #endif
-
-  NVIC_InitStructure.NVIC_IRQChannel = UART2_DMA_IRQ;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  #ifdef UART2_LINK_COMM
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_HIGH_PRI;
-  #else
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_MID_PRI;
-  #endif
-  NVIC_Init(&NVIC_InitStructure);
-
-  isUartDmaInitialized = true;
+  //COMMENTED FIRMWARE
+  // NVIC_InitTypeDef NVIC_InitStructure;
+
+  // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
+
+  // // USART TX DMA Channel Config
+  // DMA_InitStructureShare.DMA_PeripheralBaseAddr = (uint32_t)&UART2_TYPE->DR;
+  // DMA_InitStructureShare.DMA_Memory0BaseAddr = (uint32_t)dmaBuffer;
+  // DMA_InitStructureShare.DMA_MemoryInc = DMA_MemoryInc_Enable;
+  // DMA_InitStructureShare.DMA_MemoryBurst = DMA_MemoryBurst_Single;
+  // DMA_InitStructureShare.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
+  // DMA_InitStructureShare.DMA_BufferSize = 0;
+  // DMA_InitStructureShare.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
+  // DMA_InitStructureShare.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
+  // DMA_InitStructureShare.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
+  // DMA_InitStructureShare.DMA_DIR = DMA_DIR_MemoryToPeripheral;
+  // DMA_InitStructureShare.DMA_Mode = DMA_Mode_Normal;
+  // DMA_InitStructureShare.DMA_FIFOMode = DMA_FIFOMode_Disable;
+  // DMA_InitStructureShare.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull ;
+  // DMA_InitStructureShare.DMA_Channel = UART2_DMA_CH;
+  // #ifdef UART2_LINK_COMM
+  // DMA_InitStructureShare.DMA_Priority = DMA_Priority_High;
+  // #else
+  // DMA_InitStructureShare.DMA_Priority = DMA_Priority_Low;
+  // #endif
+
+  // NVIC_InitStructure.NVIC_IRQChannel = UART2_DMA_IRQ;
+  // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+  // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+  // #ifdef UART2_LINK_COMM
+  // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_HIGH_PRI;
+  // #else
+  // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_MID_PRI;
+  // #endif
+  // NVIC_Init(&NVIC_InitStructure);
+
+  // isUartDmaInitialized = true;
 }
 
 void uart2Init(const uint32_t baudrate)
 {
-
-  USART_InitTypeDef USART_InitStructure;
-  GPIO_InitTypeDef GPIO_InitStructure;
-  NVIC_InitTypeDef NVIC_InitStructure;
-
-  // initialize the FreeRTOS structures first, to prevent null pointers in interrupts
-  waitUntilSendDone = xSemaphoreCreateBinaryStatic(&waitUntilSendDoneBuffer); // initialized as blocking
-  uartBusy = xSemaphoreCreateBinaryStatic(&uartBusyBuffer); // initialized as blocking
-  xSemaphoreGive(uartBusy); // but we give it because the uart isn't busy at initialization
-
-  /* Enable GPIO and USART clock */
-  RCC_AHB1PeriphClockCmd(UART2_GPIO_PERIF, ENABLE);
-  ENABLE_UART2_RCC(UART2_PERIF, ENABLE);
-
-  /* Configure USART Rx as input floating */
-  GPIO_InitStructure.GPIO_Pin   = UART2_GPIO_RX_PIN;
-  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
-  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
-  GPIO_Init(UART2_GPIO_PORT, &GPIO_InitStructure);
-
-  /* Configure USART Tx as alternate function */
-  GPIO_InitStructure.GPIO_Pin   = UART2_GPIO_TX_PIN;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
-  GPIO_Init(UART2_GPIO_PORT, &GPIO_InitStructure);
-
-  //Map uart to alternate functions
-  GPIO_PinAFConfig(UART2_GPIO_PORT, UART2_GPIO_AF_TX_PIN, UART2_GPIO_AF_TX);
-  GPIO_PinAFConfig(UART2_GPIO_PORT, UART2_GPIO_AF_RX_PIN, UART2_GPIO_AF_RX);
-
-  USART_InitStructure.USART_BaudRate            = baudrate;
-  USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
-  USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
-  USART_InitStructure.USART_StopBits            = USART_StopBits_1;
-  USART_InitStructure.USART_Parity              = USART_Parity_No ;
-  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
-  USART_Init(UART2_TYPE, &USART_InitStructure);
-
-  uart2DmaInit();
-
-  // Configure Rx buffer not empty interrupt
-  NVIC_InitStructure.NVIC_IRQChannel = UART2_IRQ;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  #ifdef UART2_LINK_COMM
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_SYSLINK_PRI;
-  #else
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_MID_PRI;
-  #endif
-  NVIC_Init(&NVIC_InitStructure);
-
-  #ifdef UART2_LINK_COMM
-  uart2PacketDelivery = STATIC_MEM_QUEUE_CREATE(uart2PacketDelivery);
-  DEBUG_QUEUE_MONITOR_REGISTER(uart2PacketDelivery);
-  #else
-  uart2queue = STATIC_MEM_QUEUE_CREATE(uart2queue);
-  #endif
-
-  USART_ITConfig(UART2_TYPE, USART_IT_RXNE, ENABLE);
-
-  //Enable UART
-  USART_Cmd(UART2_TYPE, ENABLE);
-
-  USART_ITConfig(UART2_TYPE, USART_IT_RXNE, ENABLE);
+  //COMMENTED FIRMWARE
+
+  // USART_InitTypeDef USART_InitStructure;
+  // GPIO_InitTypeDef GPIO_InitStructure;
+  // NVIC_InitTypeDef NVIC_InitStructure;
+
+  // // initialize the FreeRTOS structures first, to prevent null pointers in interrupts
+  // waitUntilSendDone = xSemaphoreCreateBinaryStatic(&waitUntilSendDoneBuffer); // initialized as blocking
+  // uartBusy = xSemaphoreCreateBinaryStatic(&uartBusyBuffer); // initialized as blocking
+  // xSemaphoreGive(uartBusy); // but we give it because the uart isn't busy at initialization
+
+  // /* Enable GPIO and USART clock */
+  // RCC_AHB1PeriphClockCmd(UART2_GPIO_PERIF, ENABLE);
+  // ENABLE_UART2_RCC(UART2_PERIF, ENABLE);
+
+  // /* Configure USART Rx as input floating */
+  // GPIO_InitStructure.GPIO_Pin   = UART2_GPIO_RX_PIN;
+  // GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
+  // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
+  // GPIO_Init(UART2_GPIO_PORT, &GPIO_InitStructure);
+
+  // /* Configure USART Tx as alternate function */
+  // GPIO_InitStructure.GPIO_Pin   = UART2_GPIO_TX_PIN;
+  // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
+  // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+  // GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
+  // GPIO_Init(UART2_GPIO_PORT, &GPIO_InitStructure);
+
+  // //Map uart to alternate functions
+  // GPIO_PinAFConfig(UART2_GPIO_PORT, UART2_GPIO_AF_TX_PIN, UART2_GPIO_AF_TX);
+  // GPIO_PinAFConfig(UART2_GPIO_PORT, UART2_GPIO_AF_RX_PIN, UART2_GPIO_AF_RX);
+
+  // USART_InitStructure.USART_BaudRate            = baudrate;
+  // USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
+  // USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
+  // USART_InitStructure.USART_StopBits            = USART_StopBits_1;
+  // USART_InitStructure.USART_Parity              = USART_Parity_No ;
+  // USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
+  // USART_Init(UART2_TYPE, &USART_InitStructure);
+
+  // uart2DmaInit();
+
+  // // Configure Rx buffer not empty interrupt
+  // NVIC_InitStructure.NVIC_IRQChannel = UART2_IRQ;
+  // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+  // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+  // #ifdef UART2_LINK_COMM
+  // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_SYSLINK_PRI;
+  // #else
+  // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_MID_PRI;
+  // #endif
+  // NVIC_Init(&NVIC_InitStructure);
+
+  // #ifdef UART2_LINK_COMM
+  // uart2PacketDelivery = STATIC_MEM_QUEUE_CREATE(uart2PacketDelivery);
+  // DEBUG_QUEUE_MONITOR_REGISTER(uart2PacketDelivery);
+  // #else
+  // uart2queue = STATIC_MEM_QUEUE_CREATE(uart2queue);
+  // #endif
+
+  // USART_ITConfig(UART2_TYPE, USART_IT_RXNE, ENABLE);
+
+  // //Enable UART
+  // USART_Cmd(UART2_TYPE, ENABLE);
+
+  // USART_ITConfig(UART2_TYPE, USART_IT_RXNE, ENABLE);
 
   isInit = true;
 }
@@ -199,47 +201,50 @@ bool uart2Test(void)
 
 void uart2SendData(uint32_t size, uint8_t* data)
 {
-  uint32_t i;
+  //COMMENTED FIRMWARE
+  // uint32_t i;
 
-  if (!isInit)
-    return;
+  // if (!isInit)
+  //   return;
 
-  for(i = 0; i < size; i++)
-  {
-    while (!(UART2_TYPE->SR & USART_FLAG_TXE));
-    UART2_TYPE->DR = (data[i] & 0x00FF);
-  }
+  // for(i = 0; i < size; i++)
+  // {
+  //   while (!(UART2_TYPE->SR & USART_FLAG_TXE));
+  //   UART2_TYPE->DR = (data[i] & 0x00FF);
+  // }
 }
 
 void uart2SendDataDmaBlocking(uint32_t size, uint8_t* data)
 {
-  if (isUartDmaInitialized)
-  {
-    xSemaphoreTake(uartBusy, portMAX_DELAY);
-    // Wait for DMA to be free
-    while(DMA_GetCmdStatus(UART2_DMA_STREAM) != DISABLE);
-    //Copy data in DMA buffer
-    memcpy(dmaBuffer, data, size);
-    DMA_InitStructureShare.DMA_BufferSize = size;
-    initialDMACount = size;
-    // Init new DMA stream
-    DMA_Init(UART2_DMA_STREAM, &DMA_InitStructureShare);
-    // Enable the Transfer Complete interrupt
-    DMA_ITConfig(UART2_DMA_STREAM, DMA_IT_TC, ENABLE);
-    /* Enable USART DMA TX Requests */
-    USART_DMACmd(UART2_TYPE, USART_DMAReq_Tx, ENABLE);
-    /* Clear transfer complete */
-    USART_ClearFlag(UART2_TYPE, USART_FLAG_TC);
-    /* Enable DMA USART TX Stream */
-    DMA_Cmd(UART2_DMA_STREAM, ENABLE);
-    xSemaphoreTake(waitUntilSendDone, portMAX_DELAY);
-    xSemaphoreGive(uartBusy);
-  }
+  //COMMENTED FIRMWARE
+  // if (isUartDmaInitialized)
+  // {
+  //   xSemaphoreTake(uartBusy, portMAX_DELAY);
+  //   // Wait for DMA to be free
+  //   while(DMA_GetCmdStatus(UART2_DMA_STREAM) != DISABLE);
+  //   //Copy data in DMA buffer
+  //   memcpy(dmaBuffer, data, size);
+  //   DMA_InitStructureShare.DMA_BufferSize = size;
+  //   initialDMACount = size;
+  //   // Init new DMA stream
+  //   DMA_Init(UART2_DMA_STREAM, &DMA_InitStructureShare);
+  //   // Enable the Transfer Complete interrupt
+  //   DMA_ITConfig(UART2_DMA_STREAM, DMA_IT_TC, ENABLE);
+  //   /* Enable USART DMA TX Requests */
+  //   USART_DMACmd(UART2_TYPE, USART_DMAReq_Tx, ENABLE);
+  //   /* Clear transfer complete */
+  //   USART_ClearFlag(UART2_TYPE, USART_FLAG_TC);
+  //   /* Enable DMA USART TX Stream */
+  //   DMA_Cmd(UART2_DMA_STREAM, ENABLE);
+  //   xSemaphoreTake(waitUntilSendDone, portMAX_DELAY);
+  //   xSemaphoreGive(uartBusy);
+  // }
 }
 
 int uart2Putchar(int ch)
 {
-    uart2SendData(1, (uint8_t *)&ch);
+  //COMMENTED FIRMWARE
+    //uart2SendData(1, (uint8_t *)&ch);
 
     return (unsigned char)ch;
 }
@@ -363,15 +368,16 @@ bool uart2DidOverrun()
 
 void __attribute__((used)) DMA1_Stream6_IRQHandler(void)
 {
-  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+  //COMMENTED FIRMWARE
+  // portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
 
-  // Stop and cleanup DMA stream
-  DMA_ITConfig(UART2_DMA_STREAM, DMA_IT_TC, DISABLE);
-  DMA_ClearITPendingBit(UART2_DMA_STREAM, UART2_DMA_FLAG_TCIF);
-  USART_DMACmd(UART2_TYPE, USART_DMAReq_Tx, DISABLE);
-  DMA_Cmd(UART2_DMA_STREAM, DISABLE);
+  // // Stop and cleanup DMA stream
+  // DMA_ITConfig(UART2_DMA_STREAM, DMA_IT_TC, DISABLE);
+  // DMA_ClearITPendingBit(UART2_DMA_STREAM, UART2_DMA_FLAG_TCIF);
+  // USART_DMACmd(UART2_TYPE, USART_DMAReq_Tx, DISABLE);
+  // DMA_Cmd(UART2_DMA_STREAM, DISABLE);
 
-  xSemaphoreGiveFromISR(waitUntilSendDone, &xHigherPriorityTaskWoken);
+  // xSemaphoreGiveFromISR(waitUntilSendDone, &xHigherPriorityTaskWoken);
 }
 
 #ifdef UART2_LINK_COMM
@@ -403,26 +409,27 @@ void __attribute__((used)) USART2_IRQHandler(void)
 
 void __attribute__((used)) USART2_IRQHandler(void)
 {
-  uint8_t rxData;
-  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
-  if ((UART2_TYPE->SR & (1<<5)) != 0) // fast check if the RXNE interrupt has occurred
-  {
-    rxData = USART_ReceiveData(UART2_TYPE) & 0x00FF;
-    xQueueSendFromISR(uart2queue, &rxData, &xHigherPriorityTaskWoken);
-  }
-  else
-  {
-    /** if we get here, the error is most likely caused by an overrun!
-     * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun error)
-     * - and IDLE (Idle line detected) pending bits are cleared by software sequence:
-     * - reading USART_SR register followed reading the USART_DR register.
-     */
-    asm volatile ("" : "=m" (UART2_TYPE->SR) : "r" (UART2_TYPE->SR)); // force non-optimizable reads
-    asm volatile ("" : "=m" (UART2_TYPE->DR) : "r" (UART2_TYPE->DR)); // of these two registers
-
-    hasOverrun = true;
-  }
+  //COMMENTED FIRMWARE
+  // uint8_t rxData;
+  // portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+  // if ((UART2_TYPE->SR & (1<<5)) != 0) // fast check if the RXNE interrupt has occurred
+  // {
+  //   rxData = USART_ReceiveData(UART2_TYPE) & 0x00FF;
+  //   xQueueSendFromISR(uart2queue, &rxData, &xHigherPriorityTaskWoken);
+  // }
+  // else
+  // {
+  //   /** if we get here, the error is most likely caused by an overrun!
+  //    * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun error)
+  //    * - and IDLE (Idle line detected) pending bits are cleared by software sequence:
+  //    * - reading USART_SR register followed reading the USART_DR register.
+  //    */
+  //   asm volatile ("" : "=m" (UART2_TYPE->SR) : "r" (UART2_TYPE->SR)); // force non-optimizable reads
+  //   asm volatile ("" : "=m" (UART2_TYPE->DR) : "r" (UART2_TYPE->DR)); // of these two registers
+
+  //   hasOverrun = true;
+  // }
 }
 
 
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart_syslink.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart_syslink.c
index fd5df3e31..c960da880 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart_syslink.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/uart_syslink.c
@@ -83,116 +83,118 @@ static void uartslkResumeDma();
   */
 void uartslkDmaInit(void)
 {
-  NVIC_InitTypeDef NVIC_InitStructure;
-
-  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
-
-  // USART TX DMA Channel Config
-  DMA_InitStructureShare.DMA_PeripheralBaseAddr = (uint32_t)&UARTSLK_TYPE->DR;
-  DMA_InitStructureShare.DMA_Memory0BaseAddr = (uint32_t)dmaBuffer;
-  DMA_InitStructureShare.DMA_MemoryInc = DMA_MemoryInc_Enable;
-  DMA_InitStructureShare.DMA_MemoryBurst = DMA_MemoryBurst_Single;
-  DMA_InitStructureShare.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
-  DMA_InitStructureShare.DMA_BufferSize = 0;
-  DMA_InitStructureShare.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-  DMA_InitStructureShare.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
-  DMA_InitStructureShare.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
-  DMA_InitStructureShare.DMA_DIR = DMA_DIR_MemoryToPeripheral;
-  DMA_InitStructureShare.DMA_Mode = DMA_Mode_Normal;
-  DMA_InitStructureShare.DMA_Priority = DMA_Priority_High;
-  DMA_InitStructureShare.DMA_FIFOMode = DMA_FIFOMode_Disable;
-  DMA_InitStructureShare.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull ;
-  DMA_InitStructureShare.DMA_Channel = UARTSLK_DMA_CH;
-
-  NVIC_InitStructure.NVIC_IRQChannel = UARTSLK_DMA_IRQ;
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_HIGH_PRI;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
-
-  isUartDmaInitialized = true;
+  //COMMENTED FIRMWARE
+  // NVIC_InitTypeDef NVIC_InitStructure;
+
+  // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
+
+  // // USART TX DMA Channel Config
+  // DMA_InitStructureShare.DMA_PeripheralBaseAddr = (uint32_t)&UARTSLK_TYPE->DR;
+  // DMA_InitStructureShare.DMA_Memory0BaseAddr = (uint32_t)dmaBuffer;
+  // DMA_InitStructureShare.DMA_MemoryInc = DMA_MemoryInc_Enable;
+  // DMA_InitStructureShare.DMA_MemoryBurst = DMA_MemoryBurst_Single;
+  // DMA_InitStructureShare.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
+  // DMA_InitStructureShare.DMA_BufferSize = 0;
+  // DMA_InitStructureShare.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
+  // DMA_InitStructureShare.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
+  // DMA_InitStructureShare.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
+  // DMA_InitStructureShare.DMA_DIR = DMA_DIR_MemoryToPeripheral;
+  // DMA_InitStructureShare.DMA_Mode = DMA_Mode_Normal;
+  // DMA_InitStructureShare.DMA_Priority = DMA_Priority_High;
+  // DMA_InitStructureShare.DMA_FIFOMode = DMA_FIFOMode_Disable;
+  // DMA_InitStructureShare.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull ;
+  // DMA_InitStructureShare.DMA_Channel = UARTSLK_DMA_CH;
+
+  // NVIC_InitStructure.NVIC_IRQChannel = UARTSLK_DMA_IRQ;
+  // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_HIGH_PRI;
+  // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+  // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+  // NVIC_Init(&NVIC_InitStructure);
+
+  // isUartDmaInitialized = true;
 }
 
 void uartslkInit(void)
 {
-  // initialize the FreeRTOS structures first, to prevent null pointers in interrupts
-  waitUntilSendDone = xSemaphoreCreateBinaryStatic(&waitUntilSendDoneBuffer); // initialized as blocking
-  uartBusy = xSemaphoreCreateBinaryStatic(&uartBusyBuffer); // initialized as blocking
-  xSemaphoreGive(uartBusy); // but we give it because the uart isn't busy at initialization
-
-  syslinkPacketDelivery = STATIC_MEM_QUEUE_CREATE(syslinkPacketDelivery);
-  DEBUG_QUEUE_MONITOR_REGISTER(syslinkPacketDelivery);
-
-  USART_InitTypeDef USART_InitStructure;
-  GPIO_InitTypeDef GPIO_InitStructure;
-  NVIC_InitTypeDef NVIC_InitStructure;
-  EXTI_InitTypeDef extiInit;
-
-  /* Enable GPIO and USART clock */
-  RCC_AHB1PeriphClockCmd(UARTSLK_GPIO_PERIF, ENABLE);
-  ENABLE_UARTSLK_RCC(UARTSLK_PERIF, ENABLE);
-
-  /* Configure USART Rx as input floating */
-  GPIO_InitStructure.GPIO_Pin   = UARTSLK_GPIO_RX_PIN;
-  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
-  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
-  GPIO_Init(UARTSLK_GPIO_PORT, &GPIO_InitStructure);
-
-  /* Configure USART Tx as alternate function */
-  GPIO_InitStructure.GPIO_Pin   = UARTSLK_GPIO_TX_PIN;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
-  GPIO_Init(UARTSLK_GPIO_PORT, &GPIO_InitStructure);
-
-  //Map uartslk to alternate functions
-  GPIO_PinAFConfig(UARTSLK_GPIO_PORT, UARTSLK_GPIO_AF_TX_PIN, UARTSLK_GPIO_AF_TX);
-  GPIO_PinAFConfig(UARTSLK_GPIO_PORT, UARTSLK_GPIO_AF_RX_PIN, UARTSLK_GPIO_AF_RX);
-
-#if defined(UARTSLK_OUTPUT_TRACE_DATA) || defined(ADC_OUTPUT_RAW_DATA) || defined(IMU_OUTPUT_RAW_DATA_ON_UART)
-  USART_InitStructure.USART_BaudRate            = 2000000;
-  USART_InitStructure.USART_Mode                = USART_Mode_Tx;
-#else
-  USART_InitStructure.USART_BaudRate            = 1000000;
-  USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
-#endif
-  USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
-  USART_InitStructure.USART_StopBits            = USART_StopBits_1;
-  USART_InitStructure.USART_Parity              = USART_Parity_No ;
-  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
-  USART_Init(UARTSLK_TYPE, &USART_InitStructure);
-
-  uartslkDmaInit();
-
-  // Configure Rx buffer not empty interrupt
-  NVIC_InitStructure.NVIC_IRQChannel = UARTSLK_IRQ;
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_SYSLINK_PRI;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
-
-  USART_ITConfig(UARTSLK_TYPE, USART_IT_RXNE, ENABLE);
-
-  //Setting up TXEN pin (NRF flow control)
-  RCC_AHB1PeriphClockCmd(UARTSLK_TXEN_PERIF, ENABLE);
-
-  bzero(&GPIO_InitStructure, sizeof(GPIO_InitStructure));
-  GPIO_InitStructure.GPIO_Pin = UARTSLK_TXEN_PIN;
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
-  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
-  GPIO_Init(UARTSLK_TXEN_PORT, &GPIO_InitStructure);
-
-  extiInit.EXTI_Line = UARTSLK_TXEN_EXTI;
-  extiInit.EXTI_Mode = EXTI_Mode_Interrupt;
-  extiInit.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
-  extiInit.EXTI_LineCmd = ENABLE;
-  EXTI_Init(&extiInit);
-  EXTI_ClearITPendingBit(UARTSLK_TXEN_EXTI);
-
-  NVIC_EnableIRQ(EXTI4_IRQn);
-
-  //Enable UART
-  USART_Cmd(UARTSLK_TYPE, ENABLE);
+  //COMMENTED FIRMWARE
+//   // initialize the FreeRTOS structures first, to prevent null pointers in interrupts
+//   waitUntilSendDone = xSemaphoreCreateBinaryStatic(&waitUntilSendDoneBuffer); // initialized as blocking
+//   uartBusy = xSemaphoreCreateBinaryStatic(&uartBusyBuffer); // initialized as blocking
+//   xSemaphoreGive(uartBusy); // but we give it because the uart isn't busy at initialization
+
+//   syslinkPacketDelivery = STATIC_MEM_QUEUE_CREATE(syslinkPacketDelivery);
+//   DEBUG_QUEUE_MONITOR_REGISTER(syslinkPacketDelivery);
+
+//   USART_InitTypeDef USART_InitStructure;
+//   GPIO_InitTypeDef GPIO_InitStructure;
+//   NVIC_InitTypeDef NVIC_InitStructure;
+//   EXTI_InitTypeDef extiInit;
+
+//   /* Enable GPIO and USART clock */
+//   RCC_AHB1PeriphClockCmd(UARTSLK_GPIO_PERIF, ENABLE);
+//   ENABLE_UARTSLK_RCC(UARTSLK_PERIF, ENABLE);
+
+//   /* Configure USART Rx as input floating */
+//   GPIO_InitStructure.GPIO_Pin   = UARTSLK_GPIO_RX_PIN;
+//   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
+//   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
+//   GPIO_Init(UARTSLK_GPIO_PORT, &GPIO_InitStructure);
+
+//   /* Configure USART Tx as alternate function */
+//   GPIO_InitStructure.GPIO_Pin   = UARTSLK_GPIO_TX_PIN;
+//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
+//   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+//   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
+//   GPIO_Init(UARTSLK_GPIO_PORT, &GPIO_InitStructure);
+
+//   //Map uartslk to alternate functions
+//   GPIO_PinAFConfig(UARTSLK_GPIO_PORT, UARTSLK_GPIO_AF_TX_PIN, UARTSLK_GPIO_AF_TX);
+//   GPIO_PinAFConfig(UARTSLK_GPIO_PORT, UARTSLK_GPIO_AF_RX_PIN, UARTSLK_GPIO_AF_RX);
+
+// #if defined(UARTSLK_OUTPUT_TRACE_DATA) || defined(ADC_OUTPUT_RAW_DATA) || defined(IMU_OUTPUT_RAW_DATA_ON_UART)
+//   USART_InitStructure.USART_BaudRate            = 2000000;
+//   USART_InitStructure.USART_Mode                = USART_Mode_Tx;
+// #else
+//   USART_InitStructure.USART_BaudRate            = 1000000;
+//   USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
+// #endif
+//   USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
+//   USART_InitStructure.USART_StopBits            = USART_StopBits_1;
+//   USART_InitStructure.USART_Parity              = USART_Parity_No ;
+//   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
+//   USART_Init(UARTSLK_TYPE, &USART_InitStructure);
+
+//   uartslkDmaInit();
+
+//   // Configure Rx buffer not empty interrupt
+//   NVIC_InitStructure.NVIC_IRQChannel = UARTSLK_IRQ;
+//   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_SYSLINK_PRI;
+//   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+//   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+//   NVIC_Init(&NVIC_InitStructure);
+
+//   USART_ITConfig(UARTSLK_TYPE, USART_IT_RXNE, ENABLE);
+
+//   //Setting up TXEN pin (NRF flow control)
+//   RCC_AHB1PeriphClockCmd(UARTSLK_TXEN_PERIF, ENABLE);
+
+//   bzero(&GPIO_InitStructure, sizeof(GPIO_InitStructure));
+//   GPIO_InitStructure.GPIO_Pin = UARTSLK_TXEN_PIN;
+//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
+//   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
+//   GPIO_Init(UARTSLK_TXEN_PORT, &GPIO_InitStructure);
+
+//   extiInit.EXTI_Line = UARTSLK_TXEN_EXTI;
+//   extiInit.EXTI_Mode = EXTI_Mode_Interrupt;
+//   extiInit.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
+//   extiInit.EXTI_LineCmd = ENABLE;
+//   EXTI_Init(&extiInit);
+//   EXTI_ClearITPendingBit(UARTSLK_TXEN_EXTI);
+
+//   NVIC_EnableIRQ(EXTI4_IRQn);
+
+//   //Enable UART
+//   USART_Cmd(UARTSLK_TYPE, ENABLE);
   isInit = true;
 }
 
@@ -208,260 +210,273 @@ void uartslkGetPacketBlocking(SyslinkPacket* packet)
 
 void uartslkSendData(uint32_t size, uint8_t* data)
 {
-  uint32_t i;
-
-  if (!isInit)
-    return;
-
-  for(i = 0; i < size; i++)
-  {
-#ifdef UARTSLK_SPINLOOP_FLOWCTRL
-    while(GPIO_ReadInputDataBit(UARTSLK_TXEN_PORT, UARTSLK_TXEN_PIN) == Bit_SET);
-#endif
-    while (!(UARTSLK_TYPE->SR & USART_FLAG_TXE));
-    UARTSLK_TYPE->DR = (data[i] & 0x00FF);
-  }
+  //COMMENTED FIRMWARE
+//   uint32_t i;
+
+//   if (!isInit)
+//     return;
+
+//   for(i = 0; i < size; i++)
+//   {
+// #ifdef UARTSLK_SPINLOOP_FLOWCTRL
+//     while(GPIO_ReadInputDataBit(UARTSLK_TXEN_PORT, UARTSLK_TXEN_PIN) == Bit_SET);
+// #endif
+//     while (!(UARTSLK_TYPE->SR & USART_FLAG_TXE));
+//     UARTSLK_TYPE->DR = (data[i] & 0x00FF);
+//   }
 }
 
 void uartslkSendDataIsrBlocking(uint32_t size, uint8_t* data)
 {
-  xSemaphoreTake(uartBusy, portMAX_DELAY);
-  outDataIsr = data;
-  dataSizeIsr = size;
-  dataIndexIsr = 1;
-  uartslkSendData(1, &data[0]);
-  USART_ITConfig(UARTSLK_TYPE, USART_IT_TXE, ENABLE);
-  xSemaphoreTake(waitUntilSendDone, portMAX_DELAY);
-  outDataIsr = 0;
-  xSemaphoreGive(uartBusy);
+  //COMMENTED FIRMWARE
+  // xSemaphoreTake(uartBusy, portMAX_DELAY);
+  // outDataIsr = data;
+  // dataSizeIsr = size;
+  // dataIndexIsr = 1;
+  // uartslkSendData(1, &data[0]);
+  // USART_ITConfig(UARTSLK_TYPE, USART_IT_TXE, ENABLE);
+  // xSemaphoreTake(waitUntilSendDone, portMAX_DELAY);
+  // outDataIsr = 0;
+  // xSemaphoreGive(uartBusy);
 }
 
 int uartslkPutchar(int ch)
 {
-    uartslkSendData(1, (uint8_t *)&ch);
+  //COMMENTED FIRMWARE
+    //uartslkSendData(1, (uint8_t *)&ch);
 
     return (unsigned char)ch;
 }
 
 void uartslkSendDataDmaBlocking(uint32_t size, uint8_t* data)
 {
-  if (isUartDmaInitialized)
-  {
-    xSemaphoreTake(uartBusy, portMAX_DELAY);
-    // Wait for DMA to be free
-    while(DMA_GetCmdStatus(UARTSLK_DMA_STREAM) != DISABLE);
-    //Copy data in DMA buffer
-    memcpy(dmaBuffer, data, size);
-    DMA_InitStructureShare.DMA_BufferSize = size;
-    initialDMACount = size;
-    // Init new DMA stream
-    DMA_Init(UARTSLK_DMA_STREAM, &DMA_InitStructureShare);
-    // Enable the Transfer Complete interrupt
-    DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, ENABLE);
-    /* Enable USART DMA TX Requests */
-    USART_DMACmd(UARTSLK_TYPE, USART_DMAReq_Tx, ENABLE);
-    /* Clear transfer complete */
-    USART_ClearFlag(UARTSLK_TYPE, USART_FLAG_TC);
-    /* Enable DMA USART TX Stream */
-    DMA_Cmd(UARTSLK_DMA_STREAM, ENABLE);
-    xSemaphoreTake(waitUntilSendDone, portMAX_DELAY);
-    xSemaphoreGive(uartBusy);
-  }
+  //COMMENTED FIRMWARE
+  // if (isUartDmaInitialized)
+  // {
+  //   xSemaphoreTake(uartBusy, portMAX_DELAY);
+  //   // Wait for DMA to be free
+  //   while(DMA_GetCmdStatus(UARTSLK_DMA_STREAM) != DISABLE);
+  //   //Copy data in DMA buffer
+  //   memcpy(dmaBuffer, data, size);
+  //   DMA_InitStructureShare.DMA_BufferSize = size;
+  //   initialDMACount = size;
+  //   // Init new DMA stream
+  //   DMA_Init(UARTSLK_DMA_STREAM, &DMA_InitStructureShare);
+  //   // Enable the Transfer Complete interrupt
+  //   DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, ENABLE);
+  //   /* Enable USART DMA TX Requests */
+  //   USART_DMACmd(UARTSLK_TYPE, USART_DMAReq_Tx, ENABLE);
+  //   /* Clear transfer complete */
+  //   USART_ClearFlag(UARTSLK_TYPE, USART_FLAG_TC);
+  //   /* Enable DMA USART TX Stream */
+  //   DMA_Cmd(UARTSLK_DMA_STREAM, ENABLE);
+  //   xSemaphoreTake(waitUntilSendDone, portMAX_DELAY);
+  //   xSemaphoreGive(uartBusy);
+  // }
 }
 
 static void uartslkPauseDma()
 {
-  if (DMA_GetCmdStatus(UARTSLK_DMA_STREAM) == ENABLE)
-  {
-    // Disable transfer complete interrupt
-    DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, DISABLE);
-    // Disable stream to pause it
-    DMA_Cmd(UARTSLK_DMA_STREAM, DISABLE);
-    // Wait for it to be disabled
-    while(DMA_GetCmdStatus(UARTSLK_DMA_STREAM) != DISABLE);
-    // Disable transfer complete
-    DMA_ClearITPendingBit(UARTSLK_DMA_STREAM, UARTSLK_DMA_FLAG_TCIF);
-    // Read remaining data count
-    remainingDMACount = DMA_GetCurrDataCounter(UARTSLK_DMA_STREAM);
-    dmaIsPaused = true;
-  }
+  //COMMENTED FIRMWARE
+  // if (DMA_GetCmdStatus(UARTSLK_DMA_STREAM) == ENABLE)
+  // {
+  //   // Disable transfer complete interrupt
+  //   DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, DISABLE);
+  //   // Disable stream to pause it
+  //   DMA_Cmd(UARTSLK_DMA_STREAM, DISABLE);
+  //   // Wait for it to be disabled
+  //   while(DMA_GetCmdStatus(UARTSLK_DMA_STREAM) != DISABLE);
+  //   // Disable transfer complete
+  //   DMA_ClearITPendingBit(UARTSLK_DMA_STREAM, UARTSLK_DMA_FLAG_TCIF);
+  //   // Read remaining data count
+  //   remainingDMACount = DMA_GetCurrDataCounter(UARTSLK_DMA_STREAM);
+  //   dmaIsPaused = true;
+  // }
 }
 
 static void uartslkResumeDma()
 {
-  if (dmaIsPaused)
-  {
-    // Update DMA counter
-    DMA_SetCurrDataCounter(UARTSLK_DMA_STREAM, remainingDMACount);
-    // Update memory read address
-    UARTSLK_DMA_STREAM->M0AR = (uint32_t)&dmaBuffer[initialDMACount - remainingDMACount];
-    // Enable the Transfer Complete interrupt
-    DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, ENABLE);
-    /* Clear transfer complete */
-    USART_ClearFlag(UARTSLK_TYPE, USART_FLAG_TC);
-    /* Enable DMA USART TX Stream */
-    DMA_Cmd(UARTSLK_DMA_STREAM, ENABLE);
-    dmaIsPaused = false;
-  }
+  //COMMENTED FIRMWARE
+  // if (dmaIsPaused)
+  // {
+  //   // Update DMA counter
+  //   DMA_SetCurrDataCounter(UARTSLK_DMA_STREAM, remainingDMACount);
+  //   // Update memory read address
+  //   UARTSLK_DMA_STREAM->M0AR = (uint32_t)&dmaBuffer[initialDMACount - remainingDMACount];
+  //   // Enable the Transfer Complete interrupt
+  //   DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, ENABLE);
+  //   /* Clear transfer complete */
+  //   USART_ClearFlag(UARTSLK_TYPE, USART_FLAG_TC);
+  //   /* Enable DMA USART TX Stream */
+  //   DMA_Cmd(UARTSLK_DMA_STREAM, ENABLE);
+  //   dmaIsPaused = false;
+  // }
 }
 
 void uartslkDmaIsr(void)
 {
-  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+  //COMMENTED FIRMWARE
+  // portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
 
-  // Stop and cleanup DMA stream
-  DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, DISABLE);
-  DMA_ClearITPendingBit(UARTSLK_DMA_STREAM, UARTSLK_DMA_FLAG_TCIF);
-  USART_DMACmd(UARTSLK_TYPE, USART_DMAReq_Tx, DISABLE);
-  DMA_Cmd(UARTSLK_DMA_STREAM, DISABLE);
+  // // Stop and cleanup DMA stream
+  // DMA_ITConfig(UARTSLK_DMA_STREAM, DMA_IT_TC, DISABLE);
+  // DMA_ClearITPendingBit(UARTSLK_DMA_STREAM, UARTSLK_DMA_FLAG_TCIF);
+  // USART_DMACmd(UARTSLK_TYPE, USART_DMAReq_Tx, DISABLE);
+  // DMA_Cmd(UARTSLK_DMA_STREAM, DISABLE);
 
-  remainingDMACount = 0;
-  xSemaphoreGiveFromISR(waitUntilSendDone, &xHigherPriorityTaskWoken);
+  // remainingDMACount = 0;
+  // xSemaphoreGiveFromISR(waitUntilSendDone, &xHigherPriorityTaskWoken);
 }
 
 void uartslkHandleDataFromISR(uint8_t c, BaseType_t * const pxHigherPriorityTaskWoken)
 {
-  switch (rxState)
-  {
-  case waitForFirstStart:
-    rxState = (c == SYSLINK_START_BYTE1) ? waitForSecondStart : waitForFirstStart;
-    break;
-  case waitForSecondStart:
-    rxState = (c == SYSLINK_START_BYTE2) ? waitForType : waitForFirstStart;
-    break;
-  case waitForType:
-    cksum[0] = c;
-    cksum[1] = c;
-    slp.type = c;
-    rxState = waitForLength;
-    break;
-  case waitForLength:
-    if (c <= SYSLINK_MTU)
-    {
-      slp.length = c;
-      cksum[0] += c;
-      cksum[1] += cksum[0];
-      dataIndex = 0;
-      rxState = (c > 0) ? waitForData : waitForChksum1;
-    }
-    else
-    {
-      rxState = waitForFirstStart;
-    }
-    break;
-  case waitForData:
-    slp.data[dataIndex] = c;
-    cksum[0] += c;
-    cksum[1] += cksum[0];
-    dataIndex++;
-    if (dataIndex == slp.length)
-    {
-      rxState = waitForChksum1;
-    }
-    break;
-  case waitForChksum1:
-    if (cksum[0] == c)
-    {
-      rxState = waitForChksum2;
-    }
-    else
-    {
-      rxState = waitForFirstStart; //Checksum error
-      ASSERT(0);
-    }
-    break;
-  case waitForChksum2:
-    if (cksum[1] == c)
-    {
-      // Post the packet to the queue if there's room
-      if (!xQueueIsQueueFullFromISR(syslinkPacketDelivery))
-      {
-        xQueueSendFromISR(syslinkPacketDelivery, (void *)&slp, pxHigherPriorityTaskWoken);
-      }
-      else
-      {
-        ASSERT(0); // Queue overflow
-      }
-    }
-    else
-    {
-      rxState = waitForFirstStart; //Checksum error
-      ASSERT(0);
-    }
-    rxState = waitForFirstStart;
-    break;
-  default:
-    ASSERT(0);
-    break;
-  }
+  //COMMENTED FIRMWARE
+  // switch (rxState)
+  // {
+  // case waitForFirstStart:
+  //   rxState = (c == SYSLINK_START_BYTE1) ? waitForSecondStart : waitForFirstStart;
+  //   break;
+  // case waitForSecondStart:
+  //   rxState = (c == SYSLINK_START_BYTE2) ? waitForType : waitForFirstStart;
+  //   break;
+  // case waitForType:
+  //   cksum[0] = c;
+  //   cksum[1] = c;
+  //   slp.type = c;
+  //   rxState = waitForLength;
+  //   break;
+  // case waitForLength:
+  //   if (c <= SYSLINK_MTU)
+  //   {
+  //     slp.length = c;
+  //     cksum[0] += c;
+  //     cksum[1] += cksum[0];
+  //     dataIndex = 0;
+  //     rxState = (c > 0) ? waitForData : waitForChksum1;
+  //   }
+  //   else
+  //   {
+  //     rxState = waitForFirstStart;
+  //   }
+  //   break;
+  // case waitForData:
+  //   slp.data[dataIndex] = c;
+  //   cksum[0] += c;
+  //   cksum[1] += cksum[0];
+  //   dataIndex++;
+  //   if (dataIndex == slp.length)
+  //   {
+  //     rxState = waitForChksum1;
+  //   }
+  //   break;
+  // case waitForChksum1:
+  //   if (cksum[0] == c)
+  //   {
+  //     rxState = waitForChksum2;
+  //   }
+  //   else
+  //   {
+  //     rxState = waitForFirstStart; //Checksum error
+  //     ASSERT(0);
+  //   }
+  //   break;
+  // case waitForChksum2:
+  //   if (cksum[1] == c)
+  //   {
+  //     // Post the packet to the queue if there's room
+  //     if (!xQueueIsQueueFullFromISR(syslinkPacketDelivery))
+  //     {
+  //       xQueueSendFromISR(syslinkPacketDelivery, (void *)&slp, pxHigherPriorityTaskWoken);
+  //     }
+  //     else
+  //     {
+  //       ASSERT(0); // Queue overflow
+  //     }
+  //   }
+  //   else
+  //   {
+  //     rxState = waitForFirstStart; //Checksum error
+  //     ASSERT(0);
+  //   }
+  //   rxState = waitForFirstStart;
+  //   break;
+  // default:
+  //   ASSERT(0);
+  //   break;
+  // }
 }
 
 void uartslkIsr(void)
 {
-  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
-  // the following if statement replaces:
-  //   if (USART_GetITStatus(UARTSLK_TYPE, USART_IT_RXNE) == SET)
-  // we do this check as fast as possible to minimize the chance of an overrun,
-  // which occasionally cause problems and cause packet loss at high CPU usage
-  if ((UARTSLK_TYPE->SR & (1<<5)) != 0) // if the RXNE interrupt has occurred
-  {
-    uint8_t rxDataInterrupt = (uint8_t)(UARTSLK_TYPE->DR & 0xFF);
-    uartslkHandleDataFromISR(rxDataInterrupt, &xHigherPriorityTaskWoken);
-  }
-  else if (USART_GetITStatus(UARTSLK_TYPE, USART_IT_TXE) == SET)
-  {
-    if (outDataIsr && (dataIndexIsr < dataSizeIsr))
-    {
-      USART_SendData(UARTSLK_TYPE, outDataIsr[dataIndexIsr] & 0x00FF);
-      dataIndexIsr++;
-    }
-    else
-    {
-      USART_ITConfig(UARTSLK_TYPE, USART_IT_TXE, DISABLE);
-      xSemaphoreGiveFromISR(waitUntilSendDone, &xHigherPriorityTaskWoken);
-    }
-  }
-  else
-  {
-    /** if we get here, the error is most likely caused by an overrun!
-     * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun error)
-     * - and IDLE (Idle line detected) pending bits are cleared by software sequence:
-     * - reading USART_SR register followed reading the USART_DR register.
-     */
-    asm volatile ("" : "=m" (UARTSLK_TYPE->SR) : "r" (UARTSLK_TYPE->SR)); // force non-optimizable reads
-    asm volatile ("" : "=m" (UARTSLK_TYPE->DR) : "r" (UARTSLK_TYPE->DR)); // of these two registers
-  }
-
-  portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+  //COMMENTED FIRMWARE
+  // portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+  // // the following if statement replaces:
+  // //   if (USART_GetITStatus(UARTSLK_TYPE, USART_IT_RXNE) == SET)
+  // // we do this check as fast as possible to minimize the chance of an overrun,
+  // // which occasionally cause problems and cause packet loss at high CPU usage
+  // if ((UARTSLK_TYPE->SR & (1<<5)) != 0) // if the RXNE interrupt has occurred
+  // {
+  //   uint8_t rxDataInterrupt = (uint8_t)(UARTSLK_TYPE->DR & 0xFF);
+  //   uartslkHandleDataFromISR(rxDataInterrupt, &xHigherPriorityTaskWoken);
+  // }
+  // else if (USART_GetITStatus(UARTSLK_TYPE, USART_IT_TXE) == SET)
+  // {
+  //   if (outDataIsr && (dataIndexIsr < dataSizeIsr))
+  //   {
+  //     USART_SendData(UARTSLK_TYPE, outDataIsr[dataIndexIsr] & 0x00FF);
+  //     dataIndexIsr++;
+  //   }
+  //   else
+  //   {
+  //     USART_ITConfig(UARTSLK_TYPE, USART_IT_TXE, DISABLE);
+  //     xSemaphoreGiveFromISR(waitUntilSendDone, &xHigherPriorityTaskWoken);
+  //   }
+  // }
+  // else
+  // {
+  //   /** if we get here, the error is most likely caused by an overrun!
+  //    * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun error)
+  //    * - and IDLE (Idle line detected) pending bits are cleared by software sequence:
+  //    * - reading USART_SR register followed reading the USART_DR register.
+  //    */
+  //   asm volatile ("" : "=m" (UARTSLK_TYPE->SR) : "r" (UARTSLK_TYPE->SR)); // force non-optimizable reads
+  //   asm volatile ("" : "=m" (UARTSLK_TYPE->DR) : "r" (UARTSLK_TYPE->DR)); // of these two registers
+  // }
+
+  // portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
 }
 
 void uartslkTxenFlowctrlIsr()
 {
-  EXTI_ClearFlag(UARTSLK_TXEN_EXTI);
-  if (GPIO_ReadInputDataBit(UARTSLK_TXEN_PORT, UARTSLK_TXEN_PIN) == Bit_SET)
-  {
-    uartslkPauseDma();
-    //ledSet(LED_GREEN_R, 1);
-  }
-  else
-  {
-    uartslkResumeDma();
-    //ledSet(LED_GREEN_R, 0);
-  }
+  //COMMENTED FIRMWARE
+  // EXTI_ClearFlag(UARTSLK_TXEN_EXTI);
+  // if (GPIO_ReadInputDataBit(UARTSLK_TXEN_PORT, UARTSLK_TXEN_PIN) == Bit_SET)
+  // {
+  //   uartslkPauseDma();
+  //   //ledSet(LED_GREEN_R, 1);
+  // }
+  // else
+  // {
+  //   uartslkResumeDma();
+  //   //ledSet(LED_GREEN_R, 0);
+  // }
 }
 
 void __attribute__((used)) EXTI4_Callback(void)
 {
-  uartslkTxenFlowctrlIsr();
+  //COMMENTED FIRMWARE
+  //uartslkTxenFlowctrlIsr();
 }
 
 void __attribute__((used)) USART6_IRQHandler(void)
 {
-  uartslkIsr();
+  //COMMENTED FIRMWARE
+  //uartslkIsr();
 }
 
 void __attribute__((used)) DMA2_Stream7_IRQHandler(void)
 {
-  uartslkDmaIsr();
+  //COMMENTED FIRMWARE
+  //uartslkDmaIsr();
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l0x.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l0x.c
index b28be495c..49b006c39 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l0x.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l0x.c
@@ -104,26 +104,27 @@ static int nextI2CAddress = VL53L0X_DEFAULT_ADDRESS+1;
 
 bool vl53l0xInit(VL53L0xDev* dev, I2C_Dev *I2Cx, bool io_2V8)
 {
-  dev->I2Cx = I2Cx;
-  dev->devAddr = VL53L0X_DEFAULT_ADDRESS;
-
-  dev->io_timeout = 0;
-  dev->did_timeout = 0;
-  dev->timeout_start_ms = 0;
-  dev->stop_variable = 0;
-  dev->measurement_timing_budget_us = 0;
-  dev->measurement_timing_budget_ms = 0;
-
-  if (!vl53l0xInitSensor(dev, io_2V8)) {
-    return false;
-  }
+  //COMMENTED FIRMWARE
+  // dev->I2Cx = I2Cx;
+  // dev->devAddr = VL53L0X_DEFAULT_ADDRESS;
+
+  // dev->io_timeout = 0;
+  // dev->did_timeout = 0;
+  // dev->timeout_start_ms = 0;
+  // dev->stop_variable = 0;
+  // dev->measurement_timing_budget_us = 0;
+  // dev->measurement_timing_budget_ms = 0;
+
+  // if (!vl53l0xInitSensor(dev, io_2V8)) {
+  //   return false;
+  // }
 
-  /* Move initialized sensor to a new I2C address */
-  int newAddress;
+  // /* Move initialized sensor to a new I2C address */
+  // int newAddress;
 
-  taskENTER_CRITICAL();
-  newAddress = nextI2CAddress++;
-  taskEXIT_CRITICAL();
+  // taskENTER_CRITICAL();
+  // newAddress = nextI2CAddress++;
+  // taskEXIT_CRITICAL();
 
   return vl53l0xSetI2CAddress(dev, newAddress);
 }
@@ -135,8 +136,9 @@ bool vl53l0xInit(VL53L0xDev* dev, I2C_Dev *I2Cx, bool io_2V8)
 bool vl53l0xTestConnection(VL53L0xDev* dev)
 {
   bool ret = true;
-  ret &= vl53l0xGetModelID(dev) == VL53L0X_IDENTIFICATION_MODEL_ID;
-  ret &= vl53l0xGetRevisionID(dev) == VL53L0X_IDENTIFICATION_REVISION_ID;
+  //COMMENTED FIRMWARE
+  // ret &= vl53l0xGetModelID(dev) == VL53L0X_IDENTIFICATION_MODEL_ID;
+  // ret &= vl53l0xGetRevisionID(dev) == VL53L0X_IDENTIFICATION_REVISION_ID;
   return ret;
 }
 
@@ -162,7 +164,8 @@ uint16_t vl53l0xGetModelID(VL53L0xDev* dev)
 uint8_t vl53l0xGetRevisionID(VL53L0xDev* dev)
 {
   uint8_t output = 0;
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_IDENTIFICATION_REVISION_ID, &output);
+  //COMMENTED FIRMWARE
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_IDENTIFICATION_REVISION_ID, &output);
   return output;
 }
 
@@ -173,7 +176,8 @@ uint8_t vl53l0xGetRevisionID(VL53L0xDev* dev)
  */
 bool vl53l0xSetI2CAddress(VL53L0xDev* dev, uint8_t address) {
   bool pass = i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS, address);
-  dev->devAddr = address;
+  //COMMENTED FIRMWARE
+  //dev->devAddr = address;
   return pass;
 }
 
@@ -187,225 +191,226 @@ bool vl53l0xSetI2CAddress(VL53L0xDev* dev, uint8_t address) {
 // mode.
 bool vl53l0xInitSensor(VL53L0xDev* dev, bool io_2v8)
 {
-  uint8_t temp;
-  // VL53L0X_DataInit() begin
-
-  // sensor uses 1V8 mode for I/O by default; switch to 2V8 mode if necessary
-  if (io_2v8)
-  {
-    i2cdevWriteBit(dev->I2Cx, dev->devAddr, VL53L0X_RA_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV, 0, 0x01);
-  }
-
-  // "Set I2C standard mode"
-  if (!i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x88, 0x00)) {
-    return false;
-  }
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, 0x91, &dev->stop_variable);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
-
-  // disable SIGNAL_RATE_MSRC (bit 1) and SIGNAL_RATE_PRE_RANGE (bit 4) limit checks
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_CONTROL, &temp);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_CONTROL, temp | 0x12);
-
-  // set final range signal rate limit to 0.25 MCPS (million counts per second)
-  vl53l0xSetSignalRateLimit(dev, 0.25);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0xFF);
-
-  // VL53L0X_DataInit() end
-
-  // VL53L0X_StaticInit() begin
-
-  uint8_t spad_count;
-  bool spad_type_is_aperture;
-  if (!vl53l0xGetSpadInfo(dev, &spad_count, &spad_type_is_aperture)) { return false; }
-
-  // The SPAD map (RefGoodSpadMap) is read by VL53L0X_get_info_from_device() in
-  // the API, but the same data seems to be more easily readable from
-  // GLOBAL_CONFIG_SPAD_ENABLES_REF_0 through _6, so read it from there
-  uint8_t ref_spad_map[6];
-  i2cdevReadReg8(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_SPAD_ENABLES_REF_0, 6, ref_spad_map);
-
-  // -- VL53L0X_set_reference_spads() begin (assume NVM values are valid)
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_DYNAMIC_SPAD_REF_EN_START_OFFSET, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD, 0x2C);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_REF_EN_START_SELECT, 0xB4);
-
-  uint8_t first_spad_to_enable = spad_type_is_aperture ? 12 : 0; // 12 is the first aperture spad
-  uint8_t spads_enabled = 0;
-
-  for (uint8_t i = 0; i < 48; i++)
-  {
-    if (i < first_spad_to_enable || spads_enabled == spad_count)
-    {
-      // This bit is lower than the first one that should be enabled, or
-      // (reference_spad_count) bits have already been enabled, so zero this bit
-      ref_spad_map[i / 8] &= ~(1 << (i % 8));
-    }
-    else if ((ref_spad_map[i / 8] >> (i % 8)) & 0x1)
-    {
-      spads_enabled++;
-    }
-  }
-
-  i2cdevWriteReg8(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_SPAD_ENABLES_REF_0, 6, ref_spad_map);
-
-  // -- VL53L0X_set_reference_spads() end
-
-  // -- VL53L0X_load_tuning_settings() begin
-  // DefaultTuningSettings from vl53l0x_tuning.h
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x09, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x10, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x11, 0x00);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x24, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x25, 0xFF);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x75, 0x00);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4E, 0x2C);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x48, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x30, 0x20);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x30, 0x09);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x54, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x31, 0x04);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x32, 0x03);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x40, 0x83);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x46, 0x25);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x60, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x27, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x50, 0x06);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x51, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x52, 0x96);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x56, 0x08);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x57, 0x30);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x61, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x62, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x64, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x65, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x66, 0xA0);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x22, 0x32);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x47, 0x14);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x49, 0xFF);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4A, 0x00);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x7A, 0x0A);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x7B, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x78, 0x21);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x23, 0x34);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x42, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x44, 0xFF);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x45, 0x26);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x46, 0x05);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x40, 0x40);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x0E, 0x06);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x20, 0x1A);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x43, 0x40);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x34, 0x03);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x35, 0x44);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x31, 0x04);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4B, 0x09);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4C, 0x05);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4D, 0x04);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x44, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x45, 0x20);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x47, 0x08);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x48, 0x28);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x67, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x70, 0x04);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x71, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x72, 0xFE);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x76, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x77, 0x00);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x0D, 0x01);
+  //COMMENTED FIRMWARE
+  // uint8_t temp;
+  // // VL53L0X_DataInit() begin
+
+  // // sensor uses 1V8 mode for I/O by default; switch to 2V8 mode if necessary
+  // if (io_2v8)
+  // {
+  //   i2cdevWriteBit(dev->I2Cx, dev->devAddr, VL53L0X_RA_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV, 0, 0x01);
+  // }
+
+  // // "Set I2C standard mode"
+  // if (!i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x88, 0x00)) {
+  //   return false;
+  // }
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, 0x91, &dev->stop_variable);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
+
+  // // disable SIGNAL_RATE_MSRC (bit 1) and SIGNAL_RATE_PRE_RANGE (bit 4) limit checks
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_CONTROL, &temp);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_CONTROL, temp | 0x12);
+
+  // // set final range signal rate limit to 0.25 MCPS (million counts per second)
+  // vl53l0xSetSignalRateLimit(dev, 0.25);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0xFF);
+
+  // // VL53L0X_DataInit() end
+
+  // // VL53L0X_StaticInit() begin
+
+  // uint8_t spad_count;
+  // bool spad_type_is_aperture;
+  // if (!vl53l0xGetSpadInfo(dev, &spad_count, &spad_type_is_aperture)) { return false; }
+
+  // // The SPAD map (RefGoodSpadMap) is read by VL53L0X_get_info_from_device() in
+  // // the API, but the same data seems to be more easily readable from
+  // // GLOBAL_CONFIG_SPAD_ENABLES_REF_0 through _6, so read it from there
+  // uint8_t ref_spad_map[6];
+  // i2cdevReadReg8(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_SPAD_ENABLES_REF_0, 6, ref_spad_map);
+
+  // // -- VL53L0X_set_reference_spads() begin (assume NVM values are valid)
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_DYNAMIC_SPAD_REF_EN_START_OFFSET, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD, 0x2C);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_REF_EN_START_SELECT, 0xB4);
+
+  // uint8_t first_spad_to_enable = spad_type_is_aperture ? 12 : 0; // 12 is the first aperture spad
+  // uint8_t spads_enabled = 0;
+
+  // for (uint8_t i = 0; i < 48; i++)
+  // {
+  //   if (i < first_spad_to_enable || spads_enabled == spad_count)
+  //   {
+  //     // This bit is lower than the first one that should be enabled, or
+  //     // (reference_spad_count) bits have already been enabled, so zero this bit
+  //     ref_spad_map[i / 8] &= ~(1 << (i % 8));
+  //   }
+  //   else if ((ref_spad_map[i / 8] >> (i % 8)) & 0x1)
+  //   {
+  //     spads_enabled++;
+  //   }
+  // }
+
+  // i2cdevWriteReg8(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_SPAD_ENABLES_REF_0, 6, ref_spad_map);
+
+  // // -- VL53L0X_set_reference_spads() end
+
+  // // -- VL53L0X_load_tuning_settings() begin
+  // // DefaultTuningSettings from vl53l0x_tuning.h
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x09, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x10, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x11, 0x00);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x24, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x25, 0xFF);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x75, 0x00);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4E, 0x2C);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x48, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x30, 0x20);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x30, 0x09);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x54, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x31, 0x04);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x32, 0x03);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x40, 0x83);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x46, 0x25);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x60, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x27, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x50, 0x06);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x51, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x52, 0x96);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x56, 0x08);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x57, 0x30);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x61, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x62, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x64, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x65, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x66, 0xA0);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x22, 0x32);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x47, 0x14);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x49, 0xFF);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4A, 0x00);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x7A, 0x0A);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x7B, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x78, 0x21);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x23, 0x34);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x42, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x44, 0xFF);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x45, 0x26);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x46, 0x05);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x40, 0x40);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x0E, 0x06);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x20, 0x1A);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x43, 0x40);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x34, 0x03);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x35, 0x44);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x31, 0x04);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4B, 0x09);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4C, 0x05);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x4D, 0x04);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x44, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x45, 0x20);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x47, 0x08);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x48, 0x28);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x67, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x70, 0x04);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x71, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x72, 0xFE);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x76, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x77, 0x00);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x0D, 0x01);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x01, 0xF8);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x8E, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
+
+  // // -- VL53L0X_load_tuning_settings() end
+
+  // // "Set interrupt config to new sample ready"
+  // // -- VL53L0X_SetGpioConfig() begin
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CONFIG_GPIO, 0x04);
+  // i2cdevWriteBit(dev->I2Cx, dev->devAddr, VL53L0X_RA_GPIO_HV_MUX_ACTIVE_HIGH, 4, 0); // active low
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CLEAR, 0x01);
+
+  // // -- VL53L0X_SetGpioConfig() end
+
+  // dev->measurement_timing_budget_us = vl53l0xGetMeasurementTimingBudget(dev);
+  // dev->measurement_timing_budget_ms = (uint16_t)(dev->measurement_timing_budget_us / 1000.0f);
+
+  // // "Disable MSRC and TCC by default"
+  // // MSRC = Minimum Signal Rate Check
+  // // TCC = Target CentreCheck
+  // // -- VL53L0X_SetSequenceStepEnable() begin
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0xE8);
+
+  // // -- VL53L0X_SetSequenceStepEnable() end
+
+  // // "Recalculate timing budget"
+  // vl53l0xSetMeasurementTimingBudget(dev, dev->measurement_timing_budget_us);
+
+  // // VL53L0X_StaticInit() end
+
+  // // VL53L0X_PerformRefCalibration() begin (VL53L0X_perform_ref_calibration())
+
+  // // -- VL53L0X_perform_vhv_calibration() begin
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x01, 0xF8);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0x01);
+  // if (!vl53l0xPerformSingleRefCalibration(dev, 0x40)) { DEBUG_PRINT("Failed VHV calibration\n"); return false; }
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x8E, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
-
-  // -- VL53L0X_load_tuning_settings() end
-
-  // "Set interrupt config to new sample ready"
-  // -- VL53L0X_SetGpioConfig() begin
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CONFIG_GPIO, 0x04);
-  i2cdevWriteBit(dev->I2Cx, dev->devAddr, VL53L0X_RA_GPIO_HV_MUX_ACTIVE_HIGH, 4, 0); // active low
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CLEAR, 0x01);
-
-  // -- VL53L0X_SetGpioConfig() end
-
-  dev->measurement_timing_budget_us = vl53l0xGetMeasurementTimingBudget(dev);
-  dev->measurement_timing_budget_ms = (uint16_t)(dev->measurement_timing_budget_us / 1000.0f);
-
-  // "Disable MSRC and TCC by default"
-  // MSRC = Minimum Signal Rate Check
-  // TCC = Target CentreCheck
-  // -- VL53L0X_SetSequenceStepEnable() begin
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0xE8);
-
-  // -- VL53L0X_SetSequenceStepEnable() end
-
-  // "Recalculate timing budget"
-  vl53l0xSetMeasurementTimingBudget(dev, dev->measurement_timing_budget_us);
-
-  // VL53L0X_StaticInit() end
-
-  // VL53L0X_PerformRefCalibration() begin (VL53L0X_perform_ref_calibration())
-
-  // -- VL53L0X_perform_vhv_calibration() begin
+  // // -- VL53L0X_perform_vhv_calibration() end
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0x01);
-  if (!vl53l0xPerformSingleRefCalibration(dev, 0x40)) { DEBUG_PRINT("Failed VHV calibration\n"); return false; }
+  // // -- VL53L0X_perform_phase_calibration() begin
 
-  // -- VL53L0X_perform_vhv_calibration() end
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0x02);
+  // if (!vl53l0xPerformSingleRefCalibration(dev, 0x00)) { DEBUG_PRINT("Failed phase calibration\n"); return false; }
 
-  // -- VL53L0X_perform_phase_calibration() begin
+  // // -- VL53L0X_perform_phase_calibration() end
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0x02);
-  if (!vl53l0xPerformSingleRefCalibration(dev, 0x00)) { DEBUG_PRINT("Failed phase calibration\n"); return false; }
+  // // "restore the previous Sequence Config"
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0xE8);
 
-  // -- VL53L0X_perform_phase_calibration() end
-
-  // "restore the previous Sequence Config"
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0xE8);
-
-  // VL53L0X_PerformRefCalibration() end
+  // // VL53L0X_PerformRefCalibration() end
 
   return true;
 }
@@ -420,10 +425,11 @@ bool vl53l0xInitSensor(VL53L0xDev* dev, bool io_2v8)
 // Defaults to 0.25 MCPS as initialized by the ST API and this library.
 bool vl53l0xSetSignalRateLimit(VL53L0xDev* dev, float limit_Mcps)
 {
-  if (limit_Mcps < 0 || limit_Mcps > 511.99f) { return false; }
+  //COMMENTED FIRMWARE
+  // if (limit_Mcps < 0 || limit_Mcps > 511.99f) { return false; }
 
-  // Q9.7 fixed point format (9 integer bits, 7 fractional bits)
-  uint16_t fixed_pt = limit_Mcps * (1 << 7);
+  // // Q9.7 fixed point format (9 integer bits, 7 fractional bits)
+  // uint16_t fixed_pt = limit_Mcps * (1 << 7);
   return vl53l0xWriteReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT, fixed_pt);
 }
 
@@ -436,88 +442,89 @@ bool vl53l0xSetSignalRateLimit(VL53L0xDev* dev, float limit_Mcps)
 // based on VL53L0X_set_measurement_timing_budget_micro_seconds()
 bool vl53l0xSetMeasurementTimingBudget(VL53L0xDev* dev, uint32_t budget_us)
 {
-  SequenceStepEnables enables;
-  SequenceStepTimeouts timeouts;
-
-  uint16_t const StartOverhead      = 1320; // note that this is different than the value in get_
-  uint16_t const EndOverhead        = 960;
-  uint16_t const MsrcOverhead       = 660;
-  uint16_t const TccOverhead        = 590;
-  uint16_t const DssOverhead        = 690;
-  uint16_t const PreRangeOverhead   = 660;
-  uint16_t const FinalRangeOverhead = 550;
-
-  uint32_t const MinTimingBudget = 20000;
-
-  if (budget_us < MinTimingBudget) { return false; }
-
-  uint32_t used_budget_us = StartOverhead + EndOverhead;
-
-  vl53l0xGetSequenceStepEnables(dev, &enables);
-  vl53l0xGetSequenceStepTimeouts(dev, &enables, &timeouts);
-
-  if (enables.tcc)
-  {
-    used_budget_us += (timeouts.msrc_dss_tcc_us + TccOverhead);
-  }
-
-  if (enables.dss)
-  {
-    used_budget_us += 2 * (timeouts.msrc_dss_tcc_us + DssOverhead);
-  }
-  else if (enables.msrc)
-  {
-    used_budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead);
-  }
-
-  if (enables.pre_range)
-  {
-    used_budget_us += (timeouts.pre_range_us + PreRangeOverhead);
-  }
-
-  if (enables.final_range)
-  {
-    used_budget_us += FinalRangeOverhead;
-
-    // "Note that the final range timeout is determined by the timing
-    // budget and the sum of all other timeouts within the sequence.
-    // If there is no room for the final range timeout, then an error
-    // will be set. Otherwise the remaining time will be applied to
-    // the final range."
-
-    if (used_budget_us > budget_us)
-    {
-      // "Requested timeout too big."
-      return false;
-    }
-
-    uint32_t final_range_timeout_us = budget_us - used_budget_us;
-
-    // set_sequence_step_timeout() begin
-    // (SequenceStepId == VL53L0X_SEQUENCESTEP_FINAL_RANGE)
-
-    // "For the final range timeout, the pre-range timeout
-    //  must be added. To do this both final and pre-range
-    //  timeouts must be expressed in macro periods MClks
-    //  because they have different vcsel periods."
-
-    uint16_t final_range_timeout_mclks =
-      vl53l0xTimeoutMicrosecondsToMclks(final_range_timeout_us,
-                                 timeouts.final_range_vcsel_period_pclks);
-
-    if (enables.pre_range)
-    {
-      final_range_timeout_mclks += timeouts.pre_range_mclks;
-    }
-
-    uint16_t temp = vl53l0xEncodeTimeout(final_range_timeout_mclks);
-    vl53l0xWriteReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI, temp);
-
-    // set_sequence_step_timeout() end
-
-    dev->measurement_timing_budget_us = budget_us; // store for internal reuse
-    dev->measurement_timing_budget_ms = (uint16_t)(dev->measurement_timing_budget_us / 1000.0f);
-  }
+  //COMMENTED FIRMWARE
+  // SequenceStepEnables enables;
+  // SequenceStepTimeouts timeouts;
+
+  // uint16_t const StartOverhead      = 1320; // note that this is different than the value in get_
+  // uint16_t const EndOverhead        = 960;
+  // uint16_t const MsrcOverhead       = 660;
+  // uint16_t const TccOverhead        = 590;
+  // uint16_t const DssOverhead        = 690;
+  // uint16_t const PreRangeOverhead   = 660;
+  // uint16_t const FinalRangeOverhead = 550;
+
+  // uint32_t const MinTimingBudget = 20000;
+
+  // if (budget_us < MinTimingBudget) { return false; }
+
+  // uint32_t used_budget_us = StartOverhead + EndOverhead;
+
+  // vl53l0xGetSequenceStepEnables(dev, &enables);
+  // vl53l0xGetSequenceStepTimeouts(dev, &enables, &timeouts);
+
+  // if (enables.tcc)
+  // {
+  //   used_budget_us += (timeouts.msrc_dss_tcc_us + TccOverhead);
+  // }
+
+  // if (enables.dss)
+  // {
+  //   used_budget_us += 2 * (timeouts.msrc_dss_tcc_us + DssOverhead);
+  // }
+  // else if (enables.msrc)
+  // {
+  //   used_budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead);
+  // }
+
+  // if (enables.pre_range)
+  // {
+  //   used_budget_us += (timeouts.pre_range_us + PreRangeOverhead);
+  // }
+
+  // if (enables.final_range)
+  // {
+  //   used_budget_us += FinalRangeOverhead;
+
+  //   // "Note that the final range timeout is determined by the timing
+  //   // budget and the sum of all other timeouts within the sequence.
+  //   // If there is no room for the final range timeout, then an error
+  //   // will be set. Otherwise the remaining time will be applied to
+  //   // the final range."
+
+  //   if (used_budget_us > budget_us)
+  //   {
+  //     // "Requested timeout too big."
+  //     return false;
+  //   }
+
+  //   uint32_t final_range_timeout_us = budget_us - used_budget_us;
+
+  //   // set_sequence_step_timeout() begin
+  //   // (SequenceStepId == VL53L0X_SEQUENCESTEP_FINAL_RANGE)
+
+  //   // "For the final range timeout, the pre-range timeout
+  //   //  must be added. To do this both final and pre-range
+  //   //  timeouts must be expressed in macro periods MClks
+  //   //  because they have different vcsel periods."
+
+  //   uint16_t final_range_timeout_mclks =
+  //     vl53l0xTimeoutMicrosecondsToMclks(final_range_timeout_us,
+  //                                timeouts.final_range_vcsel_period_pclks);
+
+  //   if (enables.pre_range)
+  //   {
+  //     final_range_timeout_mclks += timeouts.pre_range_mclks;
+  //   }
+
+  //   uint16_t temp = vl53l0xEncodeTimeout(final_range_timeout_mclks);
+  //   vl53l0xWriteReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI, temp);
+
+  //   // set_sequence_step_timeout() end
+
+  //   dev->measurement_timing_budget_us = budget_us; // store for internal reuse
+  //   dev->measurement_timing_budget_ms = (uint16_t)(dev->measurement_timing_budget_us / 1000.0f);
+  // }
   return true;
 }
 
@@ -539,36 +546,36 @@ uint32_t vl53l0xGetMeasurementTimingBudget(VL53L0xDev* dev)
 
   // "Start and end overhead times always present"
   uint32_t budget_us = StartOverhead + EndOverhead;
-
-  vl53l0xGetSequenceStepEnables(dev, &enables);
-  vl53l0xGetSequenceStepTimeouts(dev, &enables, &timeouts);
-
-  if (enables.tcc)
-  {
-    budget_us += (timeouts.msrc_dss_tcc_us + TccOverhead);
-  }
-
-  if (enables.dss)
-  {
-    budget_us += 2 * (timeouts.msrc_dss_tcc_us + DssOverhead);
-  }
-  else if (enables.msrc)
-  {
-    budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead);
-  }
-
-  if (enables.pre_range)
-  {
-    budget_us += (timeouts.pre_range_us + PreRangeOverhead);
-  }
-
-  if (enables.final_range)
-  {
-    budget_us += (timeouts.final_range_us + FinalRangeOverhead);
-  }
-
-  dev->measurement_timing_budget_us = budget_us; // store for internal reuse
-  dev->measurement_timing_budget_ms = (uint16_t)(dev->measurement_timing_budget_us / 1000.0f);
+  //COMMENTED FIRMWARE
+  // vl53l0xGetSequenceStepEnables(dev, &enables);
+  // vl53l0xGetSequenceStepTimeouts(dev, &enables, &timeouts);
+
+  // if (enables.tcc)
+  // {
+  //   budget_us += (timeouts.msrc_dss_tcc_us + TccOverhead);
+  // }
+
+  // if (enables.dss)
+  // {
+  //   budget_us += 2 * (timeouts.msrc_dss_tcc_us + DssOverhead);
+  // }
+  // else if (enables.msrc)
+  // {
+  //   budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead);
+  // }
+
+  // if (enables.pre_range)
+  // {
+  //   budget_us += (timeouts.pre_range_us + PreRangeOverhead);
+  // }
+
+  // if (enables.final_range)
+  // {
+  //   budget_us += (timeouts.final_range_us + FinalRangeOverhead);
+  // }
+
+  // dev->measurement_timing_budget_us = budget_us; // store for internal reuse
+  // dev->measurement_timing_budget_ms = (uint16_t)(dev->measurement_timing_budget_us / 1000.0f);
   return budget_us;
 }
 
@@ -582,176 +589,177 @@ uint32_t vl53l0xGetMeasurementTimingBudget(VL53L0xDev* dev)
 // based on VL53L0X_set_vcsel_pulse_period()
 bool vl53l0xSetVcselPulsePeriod(VL53L0xDev* dev, vcselPeriodType type, uint8_t period_pclks)
 {
-  uint8_t vcsel_period_reg = encodeVcselPeriod(period_pclks);
-
-  SequenceStepEnables enables;
-  SequenceStepTimeouts timeouts;
-
-  vl53l0xGetSequenceStepEnables(dev, &enables);
-  vl53l0xGetSequenceStepTimeouts(dev, &enables, &timeouts);
-
-  // "Apply specific settings for the requested clock period"
-  // "Re-calculate and apply timeouts, in macro periods"
-
-  // "When the VCSEL period for the pre or final range is changed,
-  // the corresponding timeout must be read from the device using
-  // the current VCSEL period, then the new VCSEL period can be
-  // applied. The timeout then must be written back to the device
-  // using the new VCSEL period.
-  //
-  // For the MSRC timeout, the same applies - this timeout being
-  // dependant on the pre-range vcsel period."
-
-
-  if (type == VcselPeriodPreRange)
-  {
-    // "Set phase check limits"
-    switch (period_pclks)
-    {
-      case 12:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x18);
-        break;
-
-      case 14:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x30);
-        break;
-
-      case 16:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x40);
-        break;
-
-      case 18:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x50);
-        break;
-
-      default:
-        // invalid period
-        return false;
-    }
-    i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_LOW, 0x08);
-
-    // apply new VCSEL period
-    i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VCSEL_PERIOD, vcsel_period_reg);
-
-    // update timeouts
-
-    // set_sequence_step_timeout() begin
-    // (SequenceStepId == VL53L0X_SEQUENCESTEP_PRE_RANGE)
-
-    uint16_t new_pre_range_timeout_mclks =
-      vl53l0xTimeoutMicrosecondsToMclks(timeouts.pre_range_us, period_pclks);
-
-    uint16_t new_pre_range_timeout_encoded = vl53l0xEncodeTimeout(new_pre_range_timeout_mclks);
-    vl53l0xWriteReg16Bit(dev, VL53L0X_RA_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI, new_pre_range_timeout_encoded);
-
-    // set_sequence_step_timeout() end
-
-    // set_sequence_step_timeout() begin
-    // (SequenceStepId == VL53L0X_SEQUENCESTEP_MSRC)
-
-    uint16_t new_msrc_timeout_mclks =
-      vl53l0xTimeoutMicrosecondsToMclks(timeouts.msrc_dss_tcc_us, period_pclks);
-
-    i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_TIMEOUT_MACROP,
-      (new_msrc_timeout_mclks > 256) ? 255 : (new_msrc_timeout_mclks - 1));
-
-    // set_sequence_step_timeout() end
-  }
-  else if (type == VcselPeriodFinalRange)
-  {
-    switch (period_pclks)
-    {
-      case 8:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x10);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x02);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x0C);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x30);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-        break;
-
-      case 10:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x28);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x09);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x20);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-        break;
-
-      case 12:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x38);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x08);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x20);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-        break;
-
-      case 14:
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x48);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x07);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x20);
-        i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-        break;
-
-      default:
-        // invalid period
-        return false;
-    }
-
-    // apply new VCSEL period
-    i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VCSEL_PERIOD, vcsel_period_reg);
-
-    // update timeouts
-
-    // set_sequence_step_timeout() begin
-    // (SequenceStepId == VL53L0X_SEQUENCESTEP_FINAL_RANGE)
-
-    // "For the final range timeout, the pre-range timeout
-    //  must be added. To do this both final and pre-range
-    //  timeouts must be expressed in macro periods MClks
-    //  because they have different vcsel periods."
-
-    uint16_t new_final_range_timeout_mclks =
-      vl53l0xTimeoutMicrosecondsToMclks(timeouts.final_range_us, period_pclks);
-
-    if (enables.pre_range)
-    {
-      new_final_range_timeout_mclks += timeouts.pre_range_mclks;
-    }
-
-    uint16_t new_final_range_timeout_encoded = vl53l0xEncodeTimeout(new_final_range_timeout_mclks);
-    vl53l0xWriteReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI, new_final_range_timeout_encoded);
-
-    // set_sequence_step_timeout end
-  }
-  else
-  {
-    // invalid type
-    return false;
-  }
-
-  // "Finally, the timing budget must be re-applied"
-
-  vl53l0xSetMeasurementTimingBudget(dev, dev->measurement_timing_budget_us);
-
-  // "Perform the phase calibration. This is needed after changing on vcsel period."
-  // VL53L0X_perform_phase_calibration() begin
-
-  uint8_t sequence_config = 0;
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, &sequence_config);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0x02);
+  //COMMENTED FIRMWARE
+  // uint8_t vcsel_period_reg = encodeVcselPeriod(period_pclks);
+
+  // SequenceStepEnables enables;
+  // SequenceStepTimeouts timeouts;
+
+  // vl53l0xGetSequenceStepEnables(dev, &enables);
+  // vl53l0xGetSequenceStepTimeouts(dev, &enables, &timeouts);
+
+  // // "Apply specific settings for the requested clock period"
+  // // "Re-calculate and apply timeouts, in macro periods"
+
+  // // "When the VCSEL period for the pre or final range is changed,
+  // // the corresponding timeout must be read from the device using
+  // // the current VCSEL period, then the new VCSEL period can be
+  // // applied. The timeout then must be written back to the device
+  // // using the new VCSEL period.
+  // //
+  // // For the MSRC timeout, the same applies - this timeout being
+  // // dependant on the pre-range vcsel period."
+
+
+  // if (type == VcselPeriodPreRange)
+  // {
+  //   // "Set phase check limits"
+  //   switch (period_pclks)
+  //   {
+  //     case 12:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x18);
+  //       break;
+
+  //     case 14:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x30);
+  //       break;
+
+  //     case 16:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x40);
+  //       break;
+
+  //     case 18:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, 0x50);
+  //       break;
+
+  //     default:
+  //       // invalid period
+  //       return false;
+  //   }
+  //   i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VALID_PHASE_LOW, 0x08);
+
+  //   // apply new VCSEL period
+  //   i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VCSEL_PERIOD, vcsel_period_reg);
+
+  //   // update timeouts
+
+  //   // set_sequence_step_timeout() begin
+  //   // (SequenceStepId == VL53L0X_SEQUENCESTEP_PRE_RANGE)
+
+  //   uint16_t new_pre_range_timeout_mclks =
+  //     vl53l0xTimeoutMicrosecondsToMclks(timeouts.pre_range_us, period_pclks);
+
+  //   uint16_t new_pre_range_timeout_encoded = vl53l0xEncodeTimeout(new_pre_range_timeout_mclks);
+  //   vl53l0xWriteReg16Bit(dev, VL53L0X_RA_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI, new_pre_range_timeout_encoded);
+
+  //   // set_sequence_step_timeout() end
+
+  //   // set_sequence_step_timeout() begin
+  //   // (SequenceStepId == VL53L0X_SEQUENCESTEP_MSRC)
+
+  //   uint16_t new_msrc_timeout_mclks =
+  //     vl53l0xTimeoutMicrosecondsToMclks(timeouts.msrc_dss_tcc_us, period_pclks);
+
+  //   i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_TIMEOUT_MACROP,
+  //     (new_msrc_timeout_mclks > 256) ? 255 : (new_msrc_timeout_mclks - 1));
+
+  //   // set_sequence_step_timeout() end
+  // }
+  // else if (type == VcselPeriodFinalRange)
+  // {
+  //   switch (period_pclks)
+  //   {
+  //     case 8:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x10);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x02);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x0C);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x30);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  //       break;
+
+  //     case 10:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x28);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x09);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x20);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  //       break;
+
+  //     case 12:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x38);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x08);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x20);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  //       break;
+
+  //     case 14:
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x48);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,  0x08);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x07);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_ALGO_PHASECAL_LIM, 0x20);
+  //       i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  //       break;
+
+  //     default:
+  //       // invalid period
+  //       return false;
+  //   }
+
+  //   // apply new VCSEL period
+  //   i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VCSEL_PERIOD, vcsel_period_reg);
+
+  //   // update timeouts
+
+  //   // set_sequence_step_timeout() begin
+  //   // (SequenceStepId == VL53L0X_SEQUENCESTEP_FINAL_RANGE)
+
+  //   // "For the final range timeout, the pre-range timeout
+  //   //  must be added. To do this both final and pre-range
+  //   //  timeouts must be expressed in macro periods MClks
+  //   //  because they have different vcsel periods."
+
+  //   uint16_t new_final_range_timeout_mclks =
+  //     vl53l0xTimeoutMicrosecondsToMclks(timeouts.final_range_us, period_pclks);
+
+  //   if (enables.pre_range)
+  //   {
+  //     new_final_range_timeout_mclks += timeouts.pre_range_mclks;
+  //   }
+
+  //   uint16_t new_final_range_timeout_encoded = vl53l0xEncodeTimeout(new_final_range_timeout_mclks);
+  //   vl53l0xWriteReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI, new_final_range_timeout_encoded);
+
+  //   // set_sequence_step_timeout end
+  // }
+  // else
+  // {
+  //   // invalid type
+  //   return false;
+  // }
+
+  // // "Finally, the timing budget must be re-applied"
+
+  // vl53l0xSetMeasurementTimingBudget(dev, dev->measurement_timing_budget_us);
+
+  // // "Perform the phase calibration. This is needed after changing on vcsel period."
+  // // VL53L0X_perform_phase_calibration() begin
+
+  // uint8_t sequence_config = 0;
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, &sequence_config);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, 0x02);
   bool ret = vl53l0xPerformSingleRefCalibration(dev, 0x0);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, sequence_config);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, sequence_config);
 
-  // VL53L0X_perform_phase_calibration() end
+  // // VL53L0X_perform_phase_calibration() end
 
   return ret;
 }
@@ -760,19 +768,21 @@ bool vl53l0xSetVcselPulsePeriod(VL53L0xDev* dev, vcselPeriodType type, uint8_t p
 // based on VL53L0X_get_vcsel_pulse_period()
 uint8_t vl53l0xGetVcselPulsePeriod(VL53L0xDev* dev, vcselPeriodType type)
 {
-  if (type == VcselPeriodPreRange)
-  {
-    uint8_t temp = 0;
-    i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VCSEL_PERIOD, &temp);
-    return decodeVcselPeriod(temp);
-  }
-  else if (type == VcselPeriodFinalRange)
-  {
-    uint8_t temp = 0;
-    i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VCSEL_PERIOD, &temp);
-    return decodeVcselPeriod(temp);
-  }
-  else { return 255; }
+  //COMMENTED FIRMWARE
+  // if (type == VcselPeriodPreRange)
+  // {
+  //   uint8_t temp = 0;
+  //   i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_PRE_RANGE_CONFIG_VCSEL_PERIOD, &temp);
+  //   return decodeVcselPeriod(temp);
+  // }
+  // else if (type == VcselPeriodFinalRange)
+  // {
+  //   uint8_t temp = 0;
+  //   i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_FINAL_RANGE_CONFIG_VCSEL_PERIOD, &temp);
+  //   return decodeVcselPeriod(temp);
+  // }
+  // else { return 255; }
+  return 255;
 }
 
 // Start continuous ranging measurements. If period_ms (optional) is 0 or not
@@ -783,51 +793,53 @@ uint8_t vl53l0xGetVcselPulsePeriod(VL53L0xDev* dev, vcselPeriodType type)
 // based on VL53L0X_StartMeasurement()
 void vl53l0xStartContinuous(VL53L0xDev* dev, uint32_t period_ms)
 {
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x91, dev->stop_variable);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
-
-  if (period_ms != 0)
-  {
-    // continuous timed mode
-
-    // VL53L0X_SetInterMeasurementPeriodMilliSeconds() begin
-
-    uint16_t osc_calibrate_val = vl53l0xReadReg16Bit(dev, VL53L0X_RA_OSC_CALIBRATE_VAL);
-
-    if (osc_calibrate_val != 0)
-    {
-      period_ms *= osc_calibrate_val;
-    }
-
-    vl53l0xWriteReg32Bit(dev, VL53L0X_RA_SYSTEM_INTERMEASUREMENT_PERIOD, period_ms);
-
-    // VL53L0X_SetInterMeasurementPeriodMilliSeconds() end
-
-    i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x04); // VL53L0X_REG_SYSRANGE_MODE_TIMED
-  }
-  else
-  {
-    // continuous back-to-back mode
-    i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x02); // VL53L0X_REG_SYSRANGE_MODE_BACKTOBACK
-  }
+  //COMMENTED FIRMWARE
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x91, dev->stop_variable);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
+
+  // if (period_ms != 0)
+  // {
+  //   // continuous timed mode
+
+  //   // VL53L0X_SetInterMeasurementPeriodMilliSeconds() begin
+
+  //   uint16_t osc_calibrate_val = vl53l0xReadReg16Bit(dev, VL53L0X_RA_OSC_CALIBRATE_VAL);
+
+  //   if (osc_calibrate_val != 0)
+  //   {
+  //     period_ms *= osc_calibrate_val;
+  //   }
+
+  //   vl53l0xWriteReg32Bit(dev, VL53L0X_RA_SYSTEM_INTERMEASUREMENT_PERIOD, period_ms);
+
+  //   // VL53L0X_SetInterMeasurementPeriodMilliSeconds() end
+
+  //   i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x04); // VL53L0X_REG_SYSRANGE_MODE_TIMED
+  // }
+  // else
+  // {
+  //   // continuous back-to-back mode
+  //   i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x02); // VL53L0X_REG_SYSRANGE_MODE_BACKTOBACK
+  // }
 }
 
 // Stop continuous measurements
 // based on VL53L0X_StopMeasurement()
 void vl53l0xStopContinuous(VL53L0xDev* dev)
 {
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x01); // VL53L0X_REG_SYSRANGE_MODE_SINGLESHOT
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x91, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  //COMMENTED FIRMWARE
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x01); // VL53L0X_REG_SYSRANGE_MODE_SINGLESHOT
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x91, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
 }
 
 // Returns a range reading in millimeters when continuous mode is active
@@ -835,28 +847,30 @@ void vl53l0xStopContinuous(VL53L0xDev* dev)
 // single-shot range measurement)
 uint16_t vl53l0xReadRangeContinuousMillimeters(VL53L0xDev* dev)
 {
-  startTimeout();
-  uint8_t val = 0;
-  while ((val & 0x07) == 0)
-  {
-    i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_RESULT_INTERRUPT_STATUS, &val);
-    if ((val & 0x07) == 0)
-    {
-      // Relaxation delay when polling interrupt
-      vTaskDelay(M2T(1));
-    }
-    if (checkTimeoutExpired())
-    {
-      dev->did_timeout = true;
-      return 65535;
-    }
-  }
+  //COMMENTED FIRMWARE
+  // startTimeout();
+  // uint8_t val = 0;
+  // while ((val & 0x07) == 0)
+  // {
+  //   i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_RESULT_INTERRUPT_STATUS, &val);
+  //   if ((val & 0x07) == 0)
+  //   {
+  //     // Relaxation delay when polling interrupt
+  //     vTaskDelay(M2T(1));
+  //   }
+  //   if (checkTimeoutExpired())
+  //   {
+  //     dev->did_timeout = true;
+  //     return 65535;
+  //   }
+  // }
 
   // assumptions: Linearity Corrective Gain is 1000 (default);
   // fractional ranging is not enabled
   uint16_t range = vl53l0xReadReg16Bit(dev, VL53L0X_RA_RESULT_RANGE_STATUS + 10);
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CLEAR, 0x01);
+  //COMMENTED FIRMWARE
+  //i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CLEAR, 0x01);
 
   return range;
 }
@@ -866,28 +880,29 @@ uint16_t vl53l0xReadRangeContinuousMillimeters(VL53L0xDev* dev)
 // based on VL53L0X_PerformSingleRangingMeasurement()
 uint16_t vl53l0xReadRangeSingleMillimeters(VL53L0xDev* dev)
 {
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x91, dev->stop_variable);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
-
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x01);
-
-  // "Wait until start bit has been cleared"
-  startTimeout();
-  uint8_t val = 0x01;
-  while (val & 0x01)
-  {
-    i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, &val);
-    if (checkTimeoutExpired())
-    {
-      dev->did_timeout = true;
-      return 65535;
-    }
-  }
+  //COMMENTED FIRMWARE
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x91, dev->stop_variable);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
+
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x01);
+
+  // // "Wait until start bit has been cleared"
+  // startTimeout();
+  // uint8_t val = 0x01;
+  // while (val & 0x01)
+  // {
+  //   i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, &val);
+  //   if (checkTimeoutExpired())
+  //   {
+  //     dev->did_timeout = true;
+  //     return 65535;
+  //   }
+  // }
 
   return vl53l0xReadRangeContinuousMillimeters(dev);
 }
@@ -897,42 +912,43 @@ uint16_t vl53l0xReadRangeSingleMillimeters(VL53L0xDev* dev)
 // but only gets reference SPAD count and type
 bool vl53l0xGetSpadInfo(VL53L0xDev* dev, uint8_t * count, bool * type_is_aperture)
 {
-  uint8_t tmp;
+  //COMMENTED FIRMWARE
+  // uint8_t tmp;
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x00);
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x06);
-  i2cdevWriteBit(dev->I2Cx, dev->devAddr, 0x83, 2, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x07);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x81, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x06);
+  // i2cdevWriteBit(dev->I2Cx, dev->devAddr, 0x83, 2, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x07);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x81, 0x01);
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x01);
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x94, 0x6b);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x83, 0x00);
-  startTimeout();
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x94, 0x6b);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x83, 0x00);
+  // startTimeout();
 
-  uint8_t val = 0x00;
-  while (val == 0x00) {
-    i2cdevReadByte(dev->I2Cx, dev->devAddr, 0x83, &val);
-    if (checkTimeoutExpired()) { return false; }
-  };
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x83, 0x01);
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, 0x92, &tmp);
+  // uint8_t val = 0x00;
+  // while (val == 0x00) {
+  //   i2cdevReadByte(dev->I2Cx, dev->devAddr, 0x83, &val);
+  //   if (checkTimeoutExpired()) { return false; }
+  // };
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x83, 0x01);
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, 0x92, &tmp);
 
-  *count = tmp & 0x7f;
-  *type_is_aperture = (tmp >> 7) & 0x01;
+  // *count = tmp & 0x7f;
+  // *type_is_aperture = (tmp >> 7) & 0x01;
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x81, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x06);
-  i2cdevWriteBit(dev->I2Cx, dev->devAddr, 0x83, 2, 0);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x81, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x06);
+  // i2cdevWriteBit(dev->I2Cx, dev->devAddr, 0x83, 2, 0);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x00, 0x01);
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0xFF, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, 0x80, 0x00);
 
   return true;
 }
@@ -941,14 +957,15 @@ bool vl53l0xGetSpadInfo(VL53L0xDev* dev, uint8_t * count, bool * type_is_apertur
 // based on VL53L0X_GetSequenceStepEnables()
 void vl53l0xGetSequenceStepEnables(VL53L0xDev* dev, SequenceStepEnables * enables)
 {
-  uint8_t sequence_config = 0;
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, &sequence_config);
-
-  enables->tcc          = (sequence_config >> 4) & 0x1;
-  enables->dss          = (sequence_config >> 3) & 0x1;
-  enables->msrc         = (sequence_config >> 2) & 0x1;
-  enables->pre_range    = (sequence_config >> 6) & 0x1;
-  enables->final_range  = (sequence_config >> 7) & 0x1;
+  //COMMENTED FIRMWARE
+  // uint8_t sequence_config = 0;
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_SEQUENCE_CONFIG, &sequence_config);
+
+  // enables->tcc          = (sequence_config >> 4) & 0x1;
+  // enables->dss          = (sequence_config >> 3) & 0x1;
+  // enables->msrc         = (sequence_config >> 2) & 0x1;
+  // enables->pre_range    = (sequence_config >> 6) & 0x1;
+  // enables->final_range  = (sequence_config >> 7) & 0x1;
 }
 
 // Get sequence step timeouts
@@ -957,34 +974,35 @@ void vl53l0xGetSequenceStepEnables(VL53L0xDev* dev, SequenceStepEnables * enable
 // intermediate values
 void vl53l0xGetSequenceStepTimeouts(VL53L0xDev* dev, SequenceStepEnables const * enables, SequenceStepTimeouts * timeouts)
 {
-  timeouts->pre_range_vcsel_period_pclks = vl53l0xGetVcselPulsePeriod(dev, VcselPeriodPreRange);
-
-  uint8_t temp = 0;
-  i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_TIMEOUT_MACROP, &temp);
-  timeouts->msrc_dss_tcc_mclks = temp + 1;
-  timeouts->msrc_dss_tcc_us =
-    vl53l0xTimeoutMclksToMicroseconds(timeouts->msrc_dss_tcc_mclks,
-                               timeouts->pre_range_vcsel_period_pclks);
-
-  uint16_t pre_range_encoded = vl53l0xReadReg16Bit(dev, VL53L0X_RA_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI);
-  timeouts->pre_range_mclks = vl53l0xDecodeTimeout(pre_range_encoded);
-  timeouts->pre_range_us =
-    vl53l0xTimeoutMclksToMicroseconds(timeouts->pre_range_mclks,
-                               timeouts->pre_range_vcsel_period_pclks);
-
-  timeouts->final_range_vcsel_period_pclks = vl53l0xGetVcselPulsePeriod(dev, VcselPeriodFinalRange);
-
-  uint16_t final_range_encoded = vl53l0xReadReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI);
-  timeouts->final_range_mclks = vl53l0xDecodeTimeout(final_range_encoded);
-
-  if (enables->pre_range)
-  {
-    timeouts->final_range_mclks -= timeouts->pre_range_mclks;
-  }
-
-  timeouts->final_range_us =
-    vl53l0xTimeoutMclksToMicroseconds(timeouts->final_range_mclks,
-                               timeouts->final_range_vcsel_period_pclks);
+  //COMMENTED FIRMWARE
+  // timeouts->pre_range_vcsel_period_pclks = vl53l0xGetVcselPulsePeriod(dev, VcselPeriodPreRange);
+
+  // uint8_t temp = 0;
+  // i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_MSRC_CONFIG_TIMEOUT_MACROP, &temp);
+  // timeouts->msrc_dss_tcc_mclks = temp + 1;
+  // timeouts->msrc_dss_tcc_us =
+  //   vl53l0xTimeoutMclksToMicroseconds(timeouts->msrc_dss_tcc_mclks,
+  //                              timeouts->pre_range_vcsel_period_pclks);
+
+  // uint16_t pre_range_encoded = vl53l0xReadReg16Bit(dev, VL53L0X_RA_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI);
+  // timeouts->pre_range_mclks = vl53l0xDecodeTimeout(pre_range_encoded);
+  // timeouts->pre_range_us =
+  //   vl53l0xTimeoutMclksToMicroseconds(timeouts->pre_range_mclks,
+  //                              timeouts->pre_range_vcsel_period_pclks);
+
+  // timeouts->final_range_vcsel_period_pclks = vl53l0xGetVcselPulsePeriod(dev, VcselPeriodFinalRange);
+
+  // uint16_t final_range_encoded = vl53l0xReadReg16Bit(dev, VL53L0X_RA_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI);
+  // timeouts->final_range_mclks = vl53l0xDecodeTimeout(final_range_encoded);
+
+  // if (enables->pre_range)
+  // {
+  //   timeouts->final_range_mclks -= timeouts->pre_range_mclks;
+  // }
+
+  // timeouts->final_range_us =
+  //   vl53l0xTimeoutMclksToMicroseconds(timeouts->final_range_mclks,
+  //                              timeouts->final_range_vcsel_period_pclks);
 }
 
 // Decode sequence step timeout in MCLKs from register value
@@ -1045,19 +1063,20 @@ uint32_t vl53l0xTimeoutMicrosecondsToMclks(uint32_t timeout_period_us, uint8_t v
 // based on VL53L0X_perform_single_ref_calibration()
 bool vl53l0xPerformSingleRefCalibration(VL53L0xDev* dev, uint8_t vhv_init_byte)
 {
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x01 | vhv_init_byte); // VL53L0X_REG_SYSRANGE_MODE_START_STOP
+  //COMMENTED FIRMWARE
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x01 | vhv_init_byte); // VL53L0X_REG_SYSRANGE_MODE_START_STOP
 
-  startTimeout();
-  uint8_t temp = 0x00;
-  while ((temp & 0x07) == 0)
-  {
-    i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_RESULT_INTERRUPT_STATUS, &temp);
-    if (checkTimeoutExpired()) { return false; }
-  }
+  // startTimeout();
+  // uint8_t temp = 0x00;
+  // while ((temp & 0x07) == 0)
+  // {
+  //   i2cdevReadByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_RESULT_INTERRUPT_STATUS, &temp);
+  //   if (checkTimeoutExpired()) { return false; }
+  // }
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CLEAR, 0x01);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSTEM_INTERRUPT_CLEAR, 0x01);
 
-  i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x00);
+  // i2cdevWriteByte(dev->I2Cx, dev->devAddr, VL53L0X_RA_SYSRANGE_START, 0x00);
 
   return true;
 }
@@ -1065,7 +1084,8 @@ bool vl53l0xPerformSingleRefCalibration(VL53L0xDev* dev, uint8_t vhv_init_byte)
 uint16_t vl53l0xReadReg16Bit(VL53L0xDev* dev, uint8_t reg)
 {
   uint8_t buffer[2] = {};
-  i2cdevReadReg8(dev->I2Cx, dev->devAddr, reg, 2, (uint8_t *)&buffer);
+  //COMMENTED FIRMWARE
+  // i2cdevReadReg8(dev->I2Cx, dev->devAddr, reg, 2, (uint8_t *)&buffer);
   return ((uint16_t)(buffer[0]) << 8) | buffer[1];
 }
 
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l1x.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l1x.c
index ace2d8a2b..e8b39e0f1 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l1x.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/vl53l1x.c
@@ -55,25 +55,25 @@ static int nextI2CAddress = VL53L1X_DEFAULT_ADDRESS+8;
 bool vl53l1xInit(VL53L1_Dev_t *pdev, I2C_Dev *I2Cx)
 {
   VL53L1_Error status = VL53L1_ERROR_NONE;
+//COMMENTED FIRMWARE
+//   pdev->I2Cx = I2Cx;
+//   pdev->devAddr = VL53L1X_DEFAULT_ADDRESS;
 
-  pdev->I2Cx = I2Cx;
-  pdev->devAddr = VL53L1X_DEFAULT_ADDRESS;
+//   /* Move initialized sensor to a new I2C address */
+//   int newAddress;
 
-  /* Move initialized sensor to a new I2C address */
-  int newAddress;
+//   taskENTER_CRITICAL();
+//   newAddress = nextI2CAddress++;
+//   taskEXIT_CRITICAL();
 
-  taskENTER_CRITICAL();
-  newAddress = nextI2CAddress++;
-  taskEXIT_CRITICAL();
+//   vl53l1xSetI2CAddress(pdev, newAddress);
 
-  vl53l1xSetI2CAddress(pdev, newAddress);
+//   status = VL53L1_DataInit(pdev);
 
-  status = VL53L1_DataInit(pdev);
-
-  if (status == VL53L1_ERROR_NONE)
-  {
-    status = VL53L1_StaticInit(pdev);
-  }
+//   if (status == VL53L1_ERROR_NONE)
+//   {
+//     status = VL53L1_StaticInit(pdev);
+//   }
 
   return status == VL53L1_ERROR_NONE;
 }
@@ -82,8 +82,8 @@ bool vl53l1xTestConnection(VL53L1_Dev_t* pdev)
 {
   VL53L1_DeviceInfo_t info;
   VL53L1_Error status = VL53L1_ERROR_NONE;
-
-  status = VL53L1_GetDeviceInfo(pdev, &info);
+	//COMMENTED FIRMWARE
+//   status = VL53L1_GetDeviceInfo(pdev, &info);
 
   return status == VL53L1_ERROR_NONE;
 }
@@ -96,9 +96,9 @@ bool vl53l1xTestConnection(VL53L1_Dev_t* pdev)
 VL53L1_Error vl53l1xSetI2CAddress(VL53L1_Dev_t* pdev, uint8_t address)
 {
   VL53L1_Error status = VL53L1_ERROR_NONE;
-
-  status = VL53L1_SetDeviceAddress(pdev, address);
-  pdev->devAddr = address;
+//COMMENTED FIRMWARE
+//   status = VL53L1_SetDeviceAddress(pdev, address);
+//   pdev->devAddr = address;
   return  status;
 }
 
@@ -114,11 +114,11 @@ VL53L1_Error VL53L1_WriteMulti(
 	uint32_t      count)
 {
 	VL53L1_Error status         = VL53L1_ERROR_NONE;
-
-  if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, count, pdata))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
+//COMMENTED FIRMWARE
+//   if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, count, pdata))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
 
 	return status;
 }
@@ -130,11 +130,11 @@ VL53L1_Error VL53L1_ReadMulti(
 	uint32_t      count)
 {
 	VL53L1_Error status         = VL53L1_ERROR_NONE;
-
-  if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, count, pdata))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
+	//COMMENTED FIRMWARE
+//   if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, count, pdata))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
 
 	return status;
 }
@@ -146,11 +146,11 @@ VL53L1_Error VL53L1_WrByte(
 	uint8_t       data)
 {
 	VL53L1_Error status         = VL53L1_ERROR_NONE;
-
-	if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, 1, &data))
-	{
-	  status = VL53L1_ERROR_CONTROL_INTERFACE;
-	}
+//COMMENTED FIRMWARE
+	// if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, 1, &data))
+	// {
+	//   status = VL53L1_ERROR_CONTROL_INTERFACE;
+	// }
 
 	return status;
 }
@@ -162,11 +162,11 @@ VL53L1_Error VL53L1_WrWord(
 	uint16_t      data)
 {
   VL53L1_Error status         = VL53L1_ERROR_NONE;
-
-  if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, 2, (uint8_t *)&data))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
+	//COMMENTED FIRMWARE
+//   if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, 2, (uint8_t *)&data))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
 
 	return status;
 }
@@ -178,11 +178,11 @@ VL53L1_Error VL53L1_WrDWord(
 	uint32_t      data)
 {
 	VL53L1_Error status         = VL53L1_ERROR_NONE;
-
-	if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, 4, (uint8_t *)&data))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
+	//COMMENTED FIRMWARE
+// 	if (!i2cdevWrite16(pdev->I2Cx, pdev->devAddr, index, 4, (uint8_t *)&data))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
 
 	return status;
 }
@@ -194,13 +194,14 @@ VL53L1_Error VL53L1_RdByte(
 	uint8_t      *pdata)
 {
   VL53L1_Error status         = VL53L1_ERROR_NONE;
-  static uint8_t r8data;
+  //COMMENTED FIRMWARE
+//   static uint8_t r8data;
 
-  if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, 1, &r8data))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
-  *pdata = r8data;
+//   if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, 1, &r8data))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
+//   *pdata = r8data;
 
   return status;
 }
@@ -212,13 +213,14 @@ VL53L1_Error VL53L1_RdWord(
 	uint16_t     *pdata)
 {
   VL53L1_Error status         = VL53L1_ERROR_NONE;
-  static uint16_t r16data;
-
-  if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, 2, (uint8_t *)&r16data))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
-  *pdata = r16data;
+  //COMMENTED FIRMWARE
+//   static uint16_t r16data;
+
+//   if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, 2, (uint8_t *)&r16data))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
+//   *pdata = r16data;
   
   return status;
 }
@@ -230,13 +232,14 @@ VL53L1_Error VL53L1_RdDWord(
 	uint32_t     *pdata)
 {
   VL53L1_Error status = VL53L1_ERROR_NONE;
-  static uint32_t r32data;
+  //COMMENTED FIRMWARE
+//   static uint32_t r32data;
 
-  if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, 4, (uint8_t *)&r32data))
-  {
-    status = VL53L1_ERROR_CONTROL_INTERFACE;
-  }
-  *pdata = r32data;
+//   if (!i2cdevRead16(pdev->I2Cx, pdev->devAddr, index, 4, (uint8_t *)&r32data))
+//   {
+//     status = VL53L1_ERROR_CONTROL_INTERFACE;
+//   }
+//   *pdata = r32data;
 
   return status;
 }
@@ -250,14 +253,15 @@ VL53L1_Error VL53L1_WaitUs(
 	int32_t       wait_us)
 {
 	VL53L1_Error status         = VL53L1_ERROR_NONE;
-	uint32_t delay_ms = (wait_us + 900) / 1000;
+	//COMMENTED FIRMWARE
+	// uint32_t delay_ms = (wait_us + 900) / 1000;
 
-	if(delay_ms == 0)
-	{
-	  delay_ms = 1;
-	}
+	// if(delay_ms == 0)
+	// {
+	//   delay_ms = 1;
+	// }
 
-	vTaskDelay(M2T(delay_ms));
+	// vTaskDelay(M2T(delay_ms));
 
 	return status;
 }
@@ -267,7 +271,8 @@ VL53L1_Error VL53L1_WaitMs(
 	VL53L1_Dev_t *pdev,
 	int32_t       wait_ms)
 {
-  vTaskDelay(M2T(wait_ms));
+	//COMMENTED FIRMWARE
+  //vTaskDelay(M2T(wait_ms));
 
   return VL53L1_ERROR_NONE;
 }
@@ -280,7 +285,8 @@ VL53L1_Error VL53L1_GetTickCount(
 	uint32_t *ptick_count_ms)
 {
 	/* Returns current tick count in [ms] */
-	*ptick_count_ms = xTaskGetTickCount();
+	//COMMENTED FIRMWARE
+	//*ptick_count_ms = xTaskGetTickCount();
 
 	return VL53L1_ERROR_NONE;
 }
@@ -305,72 +311,73 @@ VL53L1_Error VL53L1_WaitValueMaskEx(
 	 *          poll_delay_ms);
 	 */
 
-	VL53L1_Error status         = VL53L1_ERROR_NONE;
-	uint32_t     start_time_ms   = 0;
-	uint32_t     current_time_ms = 0;
-	uint8_t      byte_value      = 0;
-	uint8_t      found           = 0;
-#ifdef VL53L1_LOG_ENABLE
-	uint32_t     trace_functions = 0;
-#endif
-
-	SUPPRESS_UNUSED_WARNING(poll_delay_ms);
-
-#ifdef VL53L1_LOG_ENABLE
-	/* look up register name */
-	VL53L1_get_register_name(
-			index,
-			register_name);
-
-	/* Output to I2C logger for FMT/DFT  */
-	trace_i2c("WaitValueMaskEx(%5d, %s, 0x%02X, 0x%02X, %5d);\n",
-		timeout_ms, register_name, value, mask, poll_delay_ms);
-#endif // VL53L1_LOG_ENABLE
-
-	/* calculate time limit in absolute time */
-
-	VL53L1_GetTickCount(&start_time_ms);
-	pdev->new_data_ready_poll_duration_ms = 0;
-
-	/* remember current trace functions and temporarily disable
-	 * function logging
-	 */
-
-#ifdef VL53L1_LOG_ENABLE
-	trace_functions = _LOG_GET_TRACE_FUNCTIONS();
-#endif
-
-	/* wait until value is found, timeout reached on error occurred */
-
-	while ((status == VL53L1_ERROR_NONE) &&
-		   (pdev->new_data_ready_poll_duration_ms < timeout_ms) &&
-		   (found == 0))
-	{
-		status = VL53L1_RdByte(
-						pdev,
-						index,
-						&byte_value);
-
-		if ((byte_value & mask) == value)
-		{
-			found = 1;
-		}
-
-		if (status == VL53L1_ERROR_NONE  &&
-			found == 0 &&
-			poll_delay_ms > 0)
-			status = VL53L1_WaitMs(
-							pdev,
-							poll_delay_ms);
-
-		/* Update polling time (Compare difference rather than absolute to
-		negate 32bit wrap around issue) */
-		VL53L1_GetTickCount(&current_time_ms);
-		pdev->new_data_ready_poll_duration_ms = current_time_ms - start_time_ms;
-	}
-
-	if (found == 0 && status == VL53L1_ERROR_NONE)
-		status = VL53L1_ERROR_TIME_OUT;
+ 	VL53L1_Error status         = VL53L1_ERROR_NONE;
+	 //COMMENTED FIRMWARE
+// 	uint32_t     start_time_ms   = 0;
+// 	uint32_t     current_time_ms = 0;
+// 	uint8_t      byte_value      = 0;
+// 	uint8_t      found           = 0;
+// #ifdef VL53L1_LOG_ENABLE
+// 	uint32_t     trace_functions = 0;
+// #endif
+
+// 	SUPPRESS_UNUSED_WARNING(poll_delay_ms);
+
+// #ifdef VL53L1_LOG_ENABLE
+// 	/* look up register name */
+// 	VL53L1_get_register_name(
+// 			index,
+// 			register_name);
+
+// 	/* Output to I2C logger for FMT/DFT  */
+// 	trace_i2c("WaitValueMaskEx(%5d, %s, 0x%02X, 0x%02X, %5d);\n",
+// 		timeout_ms, register_name, value, mask, poll_delay_ms);
+// #endif // VL53L1_LOG_ENABLE
+
+// 	/* calculate time limit in absolute time */
+
+// 	VL53L1_GetTickCount(&start_time_ms);
+// 	pdev->new_data_ready_poll_duration_ms = 0;
+
+// 	/* remember current trace functions and temporarily disable
+// 	 * function logging
+// 	 */
+
+// #ifdef VL53L1_LOG_ENABLE
+// 	trace_functions = _LOG_GET_TRACE_FUNCTIONS();
+// #endif
+
+// 	/* wait until value is found, timeout reached on error occurred */
+
+// 	while ((status == VL53L1_ERROR_NONE) &&
+// 		   (pdev->new_data_ready_poll_duration_ms < timeout_ms) &&
+// 		   (found == 0))
+// 	{
+// 		status = VL53L1_RdByte(
+// 						pdev,
+// 						index,
+// 						&byte_value);
+
+// 		if ((byte_value & mask) == value)
+// 		{
+// 			found = 1;
+// 		}
+
+// 		if (status == VL53L1_ERROR_NONE  &&
+// 			found == 0 &&
+// 			poll_delay_ms > 0)
+// 			status = VL53L1_WaitMs(
+// 							pdev,
+// 							poll_delay_ms);
+
+// 		/* Update polling time (Compare difference rather than absolute to
+// 		negate 32bit wrap around issue) */
+// 		VL53L1_GetTickCount(&current_time_ms);
+// 		pdev->new_data_ready_poll_duration_ms = current_time_ms - start_time_ms;
+// 	}
+
+// 	if (found == 0 && status == VL53L1_ERROR_NONE)
+// 		status = VL53L1_ERROR_TIME_OUT;
 
 	return status;
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/watchdog.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/watchdog.c
index 2bb339487..46089f6fe 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/watchdog.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/watchdog.c
@@ -33,12 +33,12 @@
 bool watchdogNormalStartTest(void)
 {
   bool wasNormalStart = true;
-
-	if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST)) {
-		RCC_ClearFlag();
-		wasNormalStart = false;
-		DEBUG_PRINT("The system resumed after watchdog timeout [WARNING]\n");
-	}
+  //COMMENTED FIRMWARE
+	// if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST)) {
+	// 	RCC_ClearFlag();
+	// 	wasNormalStart = false;
+	// 	DEBUG_PRINT("The system resumed after watchdog timeout [WARNING]\n");
+	// }
 
 	return wasNormalStart;
 }
@@ -46,31 +46,32 @@ bool watchdogNormalStartTest(void)
 
 void watchdogInit(void)
 {
-  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
+  //COMMENTED FIRMWARE
+  // IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
 
-  // The watchdog uses the LSI oscillator for checking the timeout. The LSI
-  // oscillator frequency is not very exact and the range is fairly large
-  // and also differs between the Crazyflie 1.0 and 2.0:
-  //                 MIN  TYP  MAX
-  // Crazyflie 1.0   30   40   60   (in kHz)
-  // Crazyflie 2.0   17   32   47   (in kHz)
-  //
-  IWDG_SetPrescaler(IWDG_Prescaler_32);
-  // Divide the clock with 32 which gives
-  // an interval of 17kHz/32 (CF2 min) to 60kHz/32 (CF1 max) =>
-  // 1875 Hz to 531 Hz for the watchdog timer.
-  //
-  // The goal timeout is >100 ms, but it's acceptable
-  // that the max timeout is a bit higher. Scaling the
-  // reload counter for the fastest LSI then gives a
-  // timeout of 100ms, which in turn gives a timeout
-  // of 353ms for the slowest LSI. So the watchdog timeout
-  // will be between 100ms and 353ms on all platforms.
-  //
-  // At prescaler 32 each bit is 1 ms this gives:
-  // 1875 Hz * 0.1 s / 1 => 188
-  IWDG_SetReload(188);
+  // // The watchdog uses the LSI oscillator for checking the timeout. The LSI
+  // // oscillator frequency is not very exact and the range is fairly large
+  // // and also differs between the Crazyflie 1.0 and 2.0:
+  // //                 MIN  TYP  MAX
+  // // Crazyflie 1.0   30   40   60   (in kHz)
+  // // Crazyflie 2.0   17   32   47   (in kHz)
+  // //
+  // IWDG_SetPrescaler(IWDG_Prescaler_32);
+  // // Divide the clock with 32 which gives
+  // // an interval of 17kHz/32 (CF2 min) to 60kHz/32 (CF1 max) =>
+  // // 1875 Hz to 531 Hz for the watchdog timer.
+  // //
+  // // The goal timeout is >100 ms, but it's acceptable
+  // // that the max timeout is a bit higher. Scaling the
+  // // reload counter for the fastest LSI then gives a
+  // // timeout of 100ms, which in turn gives a timeout
+  // // of 353ms for the slowest LSI. So the watchdog timeout
+  // // will be between 100ms and 353ms on all platforms.
+  // //
+  // // At prescaler 32 each bit is 1 ms this gives:
+  // // 1875 Hz * 0.1 s / 1 => 188
+  // IWDG_SetReload(188);
 
-  watchdogReset();
-  IWDG_Enable();
+  // watchdogReset();
+  // IWDG_Enable();
 }
diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/ws2812_cf2.c b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/ws2812_cf2.c
index 34e5bd7b9..c3f217631 100644
--- a/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/ws2812_cf2.c
+++ b/crazyflie_software/crazyflie-firmware-2021.06/src/drivers/src/ws2812_cf2.c
@@ -64,107 +64,109 @@ static union {
 
 void ws2812Init(void)
 {
-	uint16_t PrescalerValue;
-
-  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
-  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
-	/* GPIOB Configuration: TIM3 Channel 1 as alternate function push-pull */
-  // Configure the GPIO PB4 for the timer output
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
-  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
-  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
-  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
-  GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
-  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
-  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
-  GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-  //Map timer to alternate functions
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_TIM3);
-
-	/* Compute the prescaler value */
-	PrescalerValue = 0;
-	/* Time base configuration */
-	TIM_TimeBaseStructure.TIM_Period = (105 - 1); // 800kHz
-	TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
-	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
-	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
-  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
-	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
-
-	/* PWM1 Mode configuration: Channel1 */
-	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
-  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
-	TIM_OCInitStructure.TIM_Pulse = 0;
-	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
-	TIM_OC2Init(TIM3, &TIM_OCInitStructure);
-
-//  TIM_Cmd(TIM3, ENABLE);                      // Go!!!
-	TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
-	TIM_CtrlPWMOutputs(TIM3, ENABLE);           // enable Timer 3
-
-	/* configure DMA */
-	/* DMA clock enable */
-	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
-
-	/* DMA1 Channel5 Config TM */
-	DMA_DeInit(DMA1_Stream5);
-
-	ASSERT_DMA_SAFE(led_dma.buffer);
-  // USART TX DMA Channel Config
-  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&TIM3->CCR2;
-  DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)led_dma.buffer;    // this is the buffer memory
-  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
-  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
-  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
-  DMA_InitStructure.DMA_BufferSize = 0;
-  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
-  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
-  DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
-  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
-  DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
-  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
-  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull ;
-  DMA_InitStructure.DMA_Channel = DMA_Channel_5;
-	DMA_Init(DMA1_Stream5, &DMA_InitStructure);
-
-  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream5_IRQn;
-  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_LOW_PRI;
-  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
-  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-  NVIC_Init(&NVIC_InitStructure);
-
-  vSemaphoreCreateBinary(allLedDone);
-
-  DMA_ITConfig(DMA1_Stream5, DMA_IT_TC, ENABLE);
-  DMA_ITConfig(DMA1_Stream5, DMA_IT_HT, ENABLE);
-
-	/* TIM3 CC2 DMA Request enable */
-	TIM_DMACmd(TIM3, TIM_DMA_CC2, ENABLE);
+  //COMMENTED FIRMWARE
+// 	uint16_t PrescalerValue;
+
+//   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
+//   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
+// 	/* GPIOB Configuration: TIM3 Channel 1 as alternate function push-pull */
+//   // Configure the GPIO PB4 for the timer output
+//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
+//   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+//   GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
+//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
+//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
+//   GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
+//   GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
+//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
+//   GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+//   //Map timer to alternate functions
+//   GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_TIM3);
+
+// 	/* Compute the prescaler value */
+// 	PrescalerValue = 0;
+// 	/* Time base configuration */
+// 	TIM_TimeBaseStructure.TIM_Period = (105 - 1); // 800kHz
+// 	TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
+// 	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
+// 	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
+//   TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
+// 	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
+
+// 	/* PWM1 Mode configuration: Channel1 */
+// 	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
+//   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
+// 	TIM_OCInitStructure.TIM_Pulse = 0;
+// 	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
+// 	TIM_OC2Init(TIM3, &TIM_OCInitStructure);
+
+// //  TIM_Cmd(TIM3, ENABLE);                      // Go!!!
+// 	TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
+// 	TIM_CtrlPWMOutputs(TIM3, ENABLE);           // enable Timer 3
+
+// 	/* configure DMA */
+// 	/* DMA clock enable */
+// 	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
+
+// 	/* DMA1 Channel5 Config TM */
+// 	DMA_DeInit(DMA1_Stream5);
+
+// 	ASSERT_DMA_SAFE(led_dma.buffer);
+//   // USART TX DMA Channel Config
+//   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&TIM3->CCR2;
+//   DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)led_dma.buffer;    // this is the buffer memory
+//   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
+//   DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
+//   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
+//   DMA_InitStructure.DMA_BufferSize = 0;
+//   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
+//   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
+//   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
+//   DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
+//   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
+//   DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
+//   DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
+//   DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull ;
+//   DMA_InitStructure.DMA_Channel = DMA_Channel_5;
+// 	DMA_Init(DMA1_Stream5, &DMA_InitStructure);
+
+//   NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream5_IRQn;
+//   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_LOW_PRI;
+//   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+//   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+//   NVIC_Init(&NVIC_InitStructure);
+
+//   vSemaphoreCreateBinary(allLedDone);
+
+//   DMA_ITConfig(DMA1_Stream5, DMA_IT_TC, ENABLE);
+//   DMA_ITConfig(DMA1_Stream5, DMA_IT_HT, ENABLE);
+
+// 	/* TIM3 CC2 DMA Request enable */
+// 	TIM_DMACmd(TIM3, TIM_DMA_CC2, ENABLE);
 
 
 }
 
 static void fillLed(uint16_t *buffer, uint8_t *color)
 {
-    int i;
-
-    for(i=0; i<8; i++) // GREEN data
-	{
-	    buffer[i] = ((color[1]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
-	}
-	for(i=0; i<8; i++) // RED
-	{
-	    buffer[8+i] = ((color[0]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
-	}
-	for(i=0; i<8; i++) // BLUE
-	{
-	    buffer[16+i] = ((color[2]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
-	}
+  //COMMENTED FIRMWARE
+  //   int i;
+
+  //   for(i=0; i<8; i++) // GREEN data
+	// {
+	//     buffer[i] = ((color[1]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
+	// }
+	// for(i=0; i<8; i++) // RED
+	// {
+	//     buffer[8+i] = ((color[0]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
+	// }
+	// for(i=0; i<8; i++) // BLUE
+	// {
+	//     buffer[16+i] = ((color[2]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
+	// }
 }
 
 static int current_led = 0;
@@ -173,80 +175,83 @@ static uint8_t (*color_led)[3] = NULL;
 
 void ws2812Send(uint8_t (*color)[3], uint16_t len)
 {
-    int i;
-	if(len<1) return;
-
-	//Wait for previous transfer to be finished
-	xSemaphoreTake(allLedDone, portMAX_DELAY);
-
-	// Set interrupt context ...
-	current_led = 0;
-	total_led = len;
-	color_led = color;
-
-    for(i=0; (i<LED_PER_HALF) && (current_led<total_led+2); i++, current_led++) {
-        if (current_led<total_led)
-            fillLed(led_dma.begin+(24*i), color_led[current_led]);
-        else
-            bzero(led_dma.begin+(24*i), sizeof(led_dma.begin));
-    }
-
-    for(i=0; (i<LED_PER_HALF) && (current_led<total_led+2); i++, current_led++) {
-        if (current_led<total_led)
-            fillLed(led_dma.end+(24*i), color_led[current_led]);
-        else
-            bzero(led_dma.end+(24*i), sizeof(led_dma.end));
-    }
-
-	DMA1_Stream5->NDTR = sizeof(led_dma.buffer) / sizeof(led_dma.buffer[0]); // load number of bytes to be transferred
-	DMA_Cmd(DMA1_Stream5, ENABLE); 			// enable DMA channel 2
-	TIM_Cmd(TIM3, ENABLE);                      // Go!!!
+  //COMMENTED FIRMWARE
+  //   int i;
+	// if(len<1) return;
+
+	// //Wait for previous transfer to be finished
+	// xSemaphoreTake(allLedDone, portMAX_DELAY);
+
+	// // Set interrupt context ...
+	// current_led = 0;
+	// total_led = len;
+	// color_led = color;
+
+  //   for(i=0; (i<LED_PER_HALF) && (current_led<total_led+2); i++, current_led++) {
+  //       if (current_led<total_led)
+  //           fillLed(led_dma.begin+(24*i), color_led[current_led]);
+  //       else
+  //           bzero(led_dma.begin+(24*i), sizeof(led_dma.begin));
+  //   }
+
+  //   for(i=0; (i<LED_PER_HALF) && (current_led<total_led+2); i++, current_led++) {
+  //       if (current_led<total_led)
+  //           fillLed(led_dma.end+(24*i), color_led[current_led]);
+  //       else
+  //           bzero(led_dma.end+(24*i), sizeof(led_dma.end));
+  //   }
+
+	// DMA1_Stream5->NDTR = sizeof(led_dma.buffer) / sizeof(led_dma.buffer[0]); // load number of bytes to be transferred
+	// DMA_Cmd(DMA1_Stream5, ENABLE); 			// enable DMA channel 2
+	// TIM_Cmd(TIM3, ENABLE);                      // Go!!!
 }
 
 void ws2812DmaIsr(void)
 {
-    portBASE_TYPE xHigherPriorityTaskWoken;
-    uint16_t * buffer;
-    int i;
-
-    if (total_led == 0)
-    {
-      TIM_Cmd(TIM3, DISABLE);
-    	DMA_Cmd(DMA1_Stream5, DISABLE);
-    }
-
-    if (DMA_GetITStatus(DMA1_Stream5, DMA_IT_HTIF5))
-    {
-      DMA_ClearITPendingBit(DMA1_Stream5, DMA_IT_HTIF5);
-      buffer = led_dma.begin;
-    }
-
-    if (DMA_GetITStatus(DMA1_Stream5, DMA_IT_TCIF5))
-    {
-      DMA_ClearITPendingBit(DMA1_Stream5, DMA_IT_TCIF5);
-      buffer = led_dma.end;
-    }
-
-    for(i=0; (i<LED_PER_HALF) && (current_led<total_led+2); i++, current_led++) {
-      if (current_led<total_led)
-          fillLed(buffer+(24*i), color_led[current_led]);
-      else
-          bzero(buffer+(24*i), sizeof(led_dma.end));
-    }
-
-    if (current_led >= total_led+2) {
-      xSemaphoreGiveFromISR(allLedDone, &xHigherPriorityTaskWoken);
-
-	    TIM_Cmd(TIM3, DISABLE); 					// disable Timer 3
-	    DMA_Cmd(DMA1_Stream5, DISABLE); 			// disable DMA stream4
-
-	    total_led = 0;
-    }
+  //COMMENTED FIRMWARE
+    // portBASE_TYPE xHigherPriorityTaskWoken;
+    // uint16_t * buffer;
+    // int i;
+
+    // if (total_led == 0)
+    // {
+    //   TIM_Cmd(TIM3, DISABLE);
+    // 	DMA_Cmd(DMA1_Stream5, DISABLE);
+    // }
+
+    // if (DMA_GetITStatus(DMA1_Stream5, DMA_IT_HTIF5))
+    // {
+    //   DMA_ClearITPendingBit(DMA1_Stream5, DMA_IT_HTIF5);
+    //   buffer = led_dma.begin;
+    // }
+
+    // if (DMA_GetITStatus(DMA1_Stream5, DMA_IT_TCIF5))
+    // {
+    //   DMA_ClearITPendingBit(DMA1_Stream5, DMA_IT_TCIF5);
+    //   buffer = led_dma.end;
+    // }
+
+    // for(i=0; (i<LED_PER_HALF) && (current_led<total_led+2); i++, current_led++) {
+    //   if (current_led<total_led)
+    //       fillLed(buffer+(24*i), color_led[current_led]);
+    //   else
+    //       bzero(buffer+(24*i), sizeof(led_dma.end));
+    // }
+
+    // if (current_led >= total_led+2) {
+    //   xSemaphoreGiveFromISR(allLedDone, &xHigherPriorityTaskWoken);
+
+	  //   TIM_Cmd(TIM3, DISABLE); 					// disable Timer 3
+	  //   DMA_Cmd(DMA1_Stream5, DISABLE); 			// disable DMA stream4
+
+	  //   total_led = 0;
+    // }
 }
 
 #ifndef USDDECK_USE_ALT_PINS_AND_SPI
 void __attribute__((used)) DMA1_Stream5_IRQHandler(void)
 {
-  ws2812DmaIsr();
+  //COMMENTED FIRMWARE
+  //ws2812DmaIsr();
 }
 #endif
-- 
GitLab