commit
						368a9205cc
					
				
							
								
								
									
										16
									
								
								include/corona.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								include/corona.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
#ifndef _CORONA_h
 | 
			
		||||
#define _CORONA_H
 | 
			
		||||
 | 
			
		||||
// inspired by https://github.com/kmetz/BLEExposureNotificationBeeper
 | 
			
		||||
// (c) by Kaspar Metz
 | 
			
		||||
// modified for use in the Paxcounter by AQ
 | 
			
		||||
 | 
			
		||||
#include "globals.h"
 | 
			
		||||
#include <map>
 | 
			
		||||
 | 
			
		||||
bool cwa_init(void);
 | 
			
		||||
bool cwa_mac_add(uint8_t *);
 | 
			
		||||
void cwa_clear(void);
 | 
			
		||||
uint16_t cwa_report(void);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@ -12,10 +12,11 @@
 | 
			
		||||
 | 
			
		||||
#define MAC_SNIFF_WIFI 0
 | 
			
		||||
#define MAC_SNIFF_BLE 1
 | 
			
		||||
#define MAC_SNIFF_BLE_CWA 2
 | 
			
		||||
 | 
			
		||||
uint16_t get_salt(void);
 | 
			
		||||
uint64_t macConvert(uint8_t *paddr);
 | 
			
		||||
bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type);
 | 
			
		||||
void printKey(const char *name, const uint8_t *key, uint8_t len, bool lsb);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -20,5 +20,6 @@
 | 
			
		||||
#include "sensor.h"
 | 
			
		||||
#include "lorawan.h"
 | 
			
		||||
#include "timekeeper.h"
 | 
			
		||||
#include "corona.h"
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <SPI.h>
 | 
			
		||||
 | 
			
		||||
#ifdef HAS_SDCARD
 | 
			
		||||
#if (HAS_SDCARD)
 | 
			
		||||
#if HAS_SDCARD == 1
 | 
			
		||||
#include <mySD.h>
 | 
			
		||||
//#include <SD.h>
 | 
			
		||||
@ -15,6 +15,11 @@
 | 
			
		||||
#error HAS_SDCARD unknown card reader value, must be either 1 or 2
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
// Pins for SD-card
 | 
			
		||||
#define SDCARD_CS    (13)
 | 
			
		||||
#define SDCARD_MOSI  (15)
 | 
			
		||||
#define SDCARD_MISO  (2)
 | 
			
		||||
#define SDCARD_SCLK  (14)
 | 
			
		||||
 | 
			
		||||
#ifdef HAS_SDS011
 | 
			
		||||
#include "sds011read.h"
 | 
			
		||||
@ -38,9 +43,13 @@
 | 
			
		||||
 | 
			
		||||
#define SDCARD_FILE_NAME "/paxcount.%02d"
 | 
			
		||||
#define SDCARD_FILE_HEADER "date, time, wifi, bluet"
 | 
			
		||||
 | 
			
		||||
bool sdcard_init(void);
 | 
			
		||||
void sdcardWriteData(uint16_t, uint16_t);
 | 
			
		||||
static void createFile(void);
 | 
			
		||||
 | 
			
		||||
#define SDCARD_FILE_NAME       "paxcount.%02d"
 | 
			
		||||
#define SDCARD_FILE_HEADER     "date, time, wifi, bluet"
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
#define SDCARD_FILE_HEADER_CWA ",cwa"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool sdcard_init( void );
 | 
			
		||||
void sdcardWriteData( uint16_t, uint16_t, uint16_t = 0);
 | 
			
		||||
 | 
			
		||||
#endif   // _SDCARD_H
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,7 @@
 | 
			
		||||
#include "lorawan.h"
 | 
			
		||||
#include "display.h"
 | 
			
		||||
#include "sdcard.h"
 | 
			
		||||
#include "corona.h"
 | 
			
		||||
 | 
			
		||||
extern Ticker sendcycler;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,9 @@
 | 
			
		||||
#define BT_BD_ADDR_HEX(addr)                                                   \
 | 
			
		||||
  addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]
 | 
			
		||||
 | 
			
		||||
// checking for CWAs we need this magic bytes:
 | 
			
		||||
static const char cwaMagicBytes[] = "\x03\x03\x6F\xfd";
 | 
			
		||||
 | 
			
		||||
// local Tag for logging
 | 
			
		||||
static const char TAG[] = "bluetooth";
 | 
			
		||||
 | 
			
		||||
@ -158,10 +161,19 @@ IRAM_ATTR void gap_callback_handler(esp_gap_ble_cb_event_t event,
 | 
			
		||||
      // add this device and show new count total if it was not previously added
 | 
			
		||||
      mac_add((uint8_t *)p->scan_rst.bda, p->scan_rst.rssi, MAC_SNIFF_BLE);
 | 
			
		||||
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
     // we can call the cwa-functions now
 | 
			
		||||
     // because we use the hashed max-value
 | 
			
		||||
     // done in mac_add()
 | 
			
		||||
 | 
			
		||||
    // check for CWA-signature
 | 
			
		||||
    if ( 0 == strncmp( (const char*)p->scan_rst.ble_adv, cwaMagicBytes , 4) ) {
 | 
			
		||||
        cwa_mac_add( p->scan_rst.bda);
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      /* to be improved in vendorfilter if:
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      // you can search for elements in the payload using the
 | 
			
		||||
      // function esp_ble_resolve_adv_data()
 | 
			
		||||
      //
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								src/coona.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/coona.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,85 @@
 | 
			
		||||
// routines for counting the number of available Corona Warn Apps (CWA)
 | 
			
		||||
 | 
			
		||||
// copied from https://github.com/kmetz/BLEExposureNotificationBeeper
 | 
			
		||||
// (c) by Kaspar Metz
 | 
			
		||||
// modified for use in the Paxcounter by AQ
 | 
			
		||||
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
 | 
			
		||||
// Local logging tag
 | 
			
		||||
static const char TAG[] = __FILE__;
 | 
			
		||||
 | 
			
		||||
#define BT_BD_ADDR_HEX(addr)                                                   \
 | 
			
		||||
  addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]
 | 
			
		||||
 | 
			
		||||
#include "corona.h"
 | 
			
		||||
 | 
			
		||||
// taken from macsniff.cpp
 | 
			
		||||
extern uint16_t salt;    
 | 
			
		||||
extern uint16_t hashedmac;
 | 
			
		||||
 | 
			
		||||
// When to forget old senders.
 | 
			
		||||
#define FORGET_AFTER_MINUTES 2
 | 
			
		||||
 | 
			
		||||
static std::map<uint16_t, unsigned long> cwaSeenNotifiers;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove notifiers last seen over FORGET_AFTER_MINUTES ago.
 | 
			
		||||
 */
 | 
			
		||||
void cwa_clear() {
 | 
			
		||||
  ESP_LOGD(TAG, "CWA: forget old notifier: %d", cwaSeenNotifiers.size());
 | 
			
		||||
 | 
			
		||||
//#ifdef SOME_FORM_OF_DEBUG
 | 
			
		||||
  for (auto const ¬ifier : cwaSeenNotifiers) {
 | 
			
		||||
      ESP_LOGI(TAG, "CWA forget <%X>", notifier.first);
 | 
			
		||||
//    }
 | 
			
		||||
  }
 | 
			
		||||
//#endif
 | 
			
		||||
    /* clear everything,
 | 
			
		||||
     * otherwise we will count the same device again
 | 
			
		||||
     * as in the next cycle it will get a differetn hash-value
 | 
			
		||||
     */
 | 
			
		||||
    cwaSeenNotifiers.clear();  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* return the numbers of active CWAs found
 | 
			
		||||
 */
 | 
			
		||||
uint16_t cwa_report(void) {
 | 
			
		||||
  return cwaSeenNotifiers.size();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cwa_init(void)
 | 
			
		||||
{
 | 
			
		||||
  ESP_LOGD(TAG, "init of BLE-scanner for CWA");
 | 
			
		||||
  return true;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// similar to mac_add(), found in macsniff.cpp
 | 
			
		||||
// for comments pls. look into this function
 | 
			
		||||
bool cwa_mac_add(uint8_t* paddr) {
 | 
			
		||||
  
 | 
			
		||||
  // are we too early?
 | 
			
		||||
  if ( hashedmac <= 0 )
 | 
			
		||||
      return false;   // YES -> return
 | 
			
		||||
 | 
			
		||||
  bool added = false;
 | 
			
		||||
  ESP_LOGD(TAG, "Device address (bda): %02x:%02x:%02x:%02x:%02x:%02x",
 | 
			
		||||
               BT_BD_ADDR_HEX(paddr));
 | 
			
		||||
  
 | 
			
		||||
  ESP_LOGD(TAG, "hasehd mac = %X, count = %d (total=%d)", hashedmac, cwaSeenNotifiers.count(hashedmac), cwaSeenNotifiers.size());
 | 
			
		||||
    added = !(cwaSeenNotifiers.count(hashedmac) > 0);
 | 
			
		||||
 | 
			
		||||
    // Count only if MAC was not yet seen
 | 
			
		||||
    if (added) {
 | 
			
		||||
        ESP_LOGD(TAG, "added device with active CWA");
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   cwaSeenNotifiers[hashedmac] = millis(); // last seen at ....
 | 
			
		||||
 | 
			
		||||
  // True if MAC WiFi/BLE was new
 | 
			
		||||
  return added; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif 
 | 
			
		||||
@ -265,7 +265,12 @@ void dp_drawPage(time_t t, bool nextpage) {
 | 
			
		||||
    else
 | 
			
		||||
      dp_printf("WIFI:off");
 | 
			
		||||
    if (cfg.blescan)
 | 
			
		||||
      dp_printf(" BLTH:%-5d", macs_ble);
 | 
			
		||||
#if !(COUNT_CWA)
 | 
			
		||||
      dp_printf("BLTH:%-5d", macs_ble);
 | 
			
		||||
#else
 | 
			
		||||
      dp_printf("BLTH:%-5d", macs_ble);
 | 
			
		||||
      dp_printf("(CWA:%d)", cwa_report());
 | 
			
		||||
#endif
 | 
			
		||||
    else
 | 
			
		||||
      dp_printf(" BLTH:off");
 | 
			
		||||
#elif ((WIFICOUNTER) && (!BLECOUNTER))
 | 
			
		||||
@ -274,9 +279,12 @@ void dp_drawPage(time_t t, bool nextpage) {
 | 
			
		||||
    else
 | 
			
		||||
      dp_printf("WIFI:off");
 | 
			
		||||
#elif ((!WIFICOUNTER) && (BLECOUNTER))
 | 
			
		||||
    if (cfg.blescan)
 | 
			
		||||
    if (cfg.blescan) {
 | 
			
		||||
      dp_printf("BLTH:%-5d", macs_ble);
 | 
			
		||||
    else
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
      dp_printf("(CWA:%d)", cwa_report());
 | 
			
		||||
#endif      
 | 
			
		||||
  } else
 | 
			
		||||
      dp_printf("BLTH:off");
 | 
			
		||||
#else
 | 
			
		||||
    dp_printf("Sniffer disabled");
 | 
			
		||||
@ -736,4 +744,4 @@ void dp_plotCurve(uint16_t count, bool reset) {
 | 
			
		||||
  dp_drawPixel(plotbuf, col, row, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // HAS_DISPLAY
 | 
			
		||||
#endif // HAS_DISPLAY
 | 
			
		||||
 | 
			
		||||
@ -12,11 +12,11 @@
 | 
			
		||||
// This settings are for boards labeled v1.6 on pcb, NOT for v1.5 or older
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define HAS_LORA 1       // comment out if device shall not send data via LoRa
 | 
			
		||||
#define HAS_LORA         1 // comment out if device shall not send data via LoRa
 | 
			
		||||
#define CFG_sx1276_radio 1 // HPD13A LoRa SoC
 | 
			
		||||
 | 
			
		||||
// enable only if you want to store a local paxcount table on the device
 | 
			
		||||
#define HAS_SDCARD  2      // this board has an SD-card-reader/writer
 | 
			
		||||
#define HAS_SDCARD  1      // this board has an SD-card-reader/writer
 | 
			
		||||
 | 
			
		||||
#define HAS_DISPLAY 1
 | 
			
		||||
#define HAS_LED (25) // green on board LED
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,9 @@
 | 
			
		||||
// Local logging tag
 | 
			
		||||
static const char TAG[] = __FILE__;
 | 
			
		||||
 | 
			
		||||
uint16_t salt;
 | 
			
		||||
// used here and in corona.cpp
 | 
			
		||||
uint16_t salt = -1;
 | 
			
		||||
uint16_t hashedmac = -1; // temporary buffer for generated hash value
 | 
			
		||||
 | 
			
		||||
uint16_t get_salt(void) {
 | 
			
		||||
  salt = (uint16_t)random(65536); // get new 16bit random for salting hashes
 | 
			
		||||
@ -51,7 +53,6 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
 | 
			
		||||
  char buff[10]; // temporary buffer for printf
 | 
			
		||||
  bool added = false;
 | 
			
		||||
  int8_t beaconID;    // beacon number in test monitor mode
 | 
			
		||||
  uint16_t hashedmac; // temporary buffer for generated hash value
 | 
			
		||||
  uint32_t *mac;      // temporary buffer for shortened MAC
 | 
			
		||||
 | 
			
		||||
  // only last 3 MAC Address bytes are used for MAC address anonymization
 | 
			
		||||
@ -111,18 +112,25 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
 | 
			
		||||
          payload.addAlarm(rssi, beaconID);
 | 
			
		||||
          SendPayload(BEACONPORT, prio_high);
 | 
			
		||||
        }
 | 
			
		||||
      };
 | 
			
		||||
      }; 
 | 
			
		||||
 | 
			
		||||
    } // added
 | 
			
		||||
 | 
			
		||||
    // Log scan result
 | 
			
		||||
    ESP_LOGV(TAG,
 | 
			
		||||
             "%s %s RSSI %ddBi -> salted MAC %s -> Hash %04X -> WiFi:%d  "
 | 
			
		||||
             "BLTH:%d -> "
 | 
			
		||||
             "%d Bytes left",
 | 
			
		||||
             "BLTH:%d "
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
            "(CWA:%d)"
 | 
			
		||||
#endif                     
 | 
			
		||||
             "-> %d Bytes left",
 | 
			
		||||
             added ? "new  " : "known",
 | 
			
		||||
             sniff_type == MAC_SNIFF_WIFI ? "WiFi" : "BLTH", rssi, buff,
 | 
			
		||||
             hashedmac, macs_wifi, macs_ble, getFreeRAM());
 | 
			
		||||
             hashedmac, macs_wifi, macs_ble, 
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
             cwa_report(),
 | 
			
		||||
#endif
 | 
			
		||||
             getFreeRAM());
 | 
			
		||||
 | 
			
		||||
#if (VENDORFILTER)
 | 
			
		||||
  } else {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								src/main.cpp
									
									
									
									
									
								
							@ -312,9 +312,25 @@ void setup() {
 | 
			
		||||
 | 
			
		||||
// initialize sensors
 | 
			
		||||
#if (HAS_SENSORS)
 | 
			
		||||
  strcat_P(features, " SENS");
 | 
			
		||||
#if (HAS_SENSOR_1)
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
  ESP_LOGI(TAG, "init CWA-counter");
 | 
			
		||||
  if ( cwa_init() )
 | 
			
		||||
      strcat_P(features, " CWA");
 | 
			
		||||
#else        
 | 
			
		||||
  strcat_P(features, " SENS(1)");
 | 
			
		||||
  sensor_init();
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#if (HAS_SENSOR_2)
 | 
			
		||||
  strcat_P(features, " SENS(2)");
 | 
			
		||||
  sensor_init();
 | 
			
		||||
#endif
 | 
			
		||||
#if (HAS_SENSOR_3)
 | 
			
		||||
  strcat_P(features, " SENS(3)");
 | 
			
		||||
  sensor_init();
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// initialize LoRa
 | 
			
		||||
#if (HAS_LORA)
 | 
			
		||||
@ -336,7 +352,7 @@ void setup() {
 | 
			
		||||
  assert(mqtt_init() == ESP_OK);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef HAS_SDCARD
 | 
			
		||||
#if (HAS_SDCARD)
 | 
			
		||||
  if (sdcard_init())
 | 
			
		||||
    strcat_P(features, " SD");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,15 @@
 | 
			
		||||
#define BLESCANWINDOW                   80      // [milliseconds] scan window, see below, 3 .. 10240, default 80ms
 | 
			
		||||
#define BLESCANINTERVAL                 80      // [illiseconds] scan interval, see below, 3 .. 10240, default 80ms = 100% duty cycle
 | 
			
		||||
 | 
			
		||||
#define COUNT_CWA                       0       // count found copies of the Corona Warn App (CWA)
 | 
			
		||||
                                                // set to 0 if you do not want to count these apps
 | 
			
		||||
 | 
			
		||||
// for additional sensors (added by some user)
 | 
			
		||||
#define HAS_SENSOR_1                    0       // set to 1 if you want to count CWAs
 | 
			
		||||
#define HAS_SENSOR_2                    0       // not used 
 | 
			
		||||
#define HAS_SENSOR_3                    0       // not used
 | 
			
		||||
#define HAS_SENSORS     (HAS_SENSOR_1 || HAS_SENSOR_2 || HAS_SENSOR_3)   // to simplify things
 | 
			
		||||
 | 
			
		||||
/* Note: guide for setting bluetooth parameters
 | 
			
		||||
*
 | 
			
		||||
* |< Scan Window >       |< Scan Window >       | ... |< Scan Window >       |
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,8 @@ static const char TAG[] = __FILE__;
 | 
			
		||||
 | 
			
		||||
static bool useSDCard;
 | 
			
		||||
 | 
			
		||||
static void createFile(void);
 | 
			
		||||
 | 
			
		||||
File fileSDCard;
 | 
			
		||||
 | 
			
		||||
bool sdcard_init() {
 | 
			
		||||
@ -19,9 +21,7 @@ bool sdcard_init() {
 | 
			
		||||
  // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/sdmmc_host.html
 | 
			
		||||
 | 
			
		||||
#if HAS_SDCARD == 1 // use SD SPI host driver
 | 
			
		||||
 | 
			
		||||
  useSDCard = SD.begin(SDCARD_CS, SDCARD_MOSI, SDCARD_MISO, SDCARD_SCLK);
 | 
			
		||||
 | 
			
		||||
  //SPI.begin(SDCARD_SCLK, SDCARD_MSO, SDCARD_MOSI, SDCARD_CS);
 | 
			
		||||
  //delay(10);
 | 
			
		||||
  //useSDCard = SD.begin(SDCARD_CS, SPI, 40000000, "/sd");
 | 
			
		||||
@ -38,7 +38,7 @@ bool sdcard_init() {
 | 
			
		||||
  return useSDCard;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sdcardWriteData(uint16_t noWifi, uint16_t noBle) {
 | 
			
		||||
void sdcardWriteData(uint16_t noWifi, uint16_t noBle, __attribute__((unused)) uint16_t noBleCWA) {
 | 
			
		||||
  static int counterWrites = 0;
 | 
			
		||||
  char tempBuffer[12 + 1];
 | 
			
		||||
  time_t t = now();
 | 
			
		||||
@ -56,6 +56,10 @@ void sdcardWriteData(uint16_t noWifi, uint16_t noBle) {
 | 
			
		||||
  fileSDCard.print(tempBuffer);
 | 
			
		||||
  sprintf(tempBuffer, "%d,%d", noWifi, noBle);
 | 
			
		||||
  fileSDCard.print(tempBuffer);
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
  sprintf(tempBuffer, ",%d", noBleCWA);
 | 
			
		||||
  fileSDCard.print(tempBuffer);
 | 
			
		||||
#endif
 | 
			
		||||
#if (HAS_SDS011)
 | 
			
		||||
  sds011_store(&sds);
 | 
			
		||||
  sprintf(tempBuffer, ",%5.1f,%4.1f", sds.pm10, sds.pm25);
 | 
			
		||||
@ -98,6 +102,9 @@ void createFile(void) {
 | 
			
		||||
      if (fileSDCard) {
 | 
			
		||||
        ESP_LOGD(TAG, "SD: name opened: <%s>", bufferFilename);
 | 
			
		||||
        fileSDCard.print(SDCARD_FILE_HEADER);
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
        fileSDCard.print(SDCARD_FILE_HEADER_CWA);             // for Corona-data (CWA)
 | 
			
		||||
#endif
 | 
			
		||||
#if (HAS_SDS011)
 | 
			
		||||
        fileSDCard.print(SDCARD_FILE_HEADER_SDS011);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -55,8 +55,14 @@ void SendPayload(uint8_t port, sendprio_t prio) {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// write data to sdcard, if present
 | 
			
		||||
#ifdef HAS_SDCARD
 | 
			
		||||
  sdcardWriteData(macs_wifi, macs_ble);
 | 
			
		||||
#if (HAS_SDCARD)
 | 
			
		||||
  if ( port == COUNTERPORT ) {
 | 
			
		||||
      sdcardWriteData(macs_wifi, macs_ble
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
       , cwa_report()
 | 
			
		||||
#endif              
 | 
			
		||||
       );
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
} // SendPayload
 | 
			
		||||
@ -143,22 +149,31 @@ void sendData() {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (HAS_SENSORS)
 | 
			
		||||
#if (HAS_SENSOR_1)
 | 
			
		||||
    case SENSOR1_DATA:
 | 
			
		||||
      payload.reset();
 | 
			
		||||
      payload.addSensor(sensor_read(1));
 | 
			
		||||
      SendPayload(SENSOR1PORT, prio_normal);
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
      cwa_clear();
 | 
			
		||||
#endif
 | 
			
		||||
      break;
 | 
			
		||||
#endif
 | 
			
		||||
#if (HAS_SENSOR_2)
 | 
			
		||||
    case SENSOR2_DATA:
 | 
			
		||||
      payload.reset();
 | 
			
		||||
      payload.addSensor(sensor_read(2));
 | 
			
		||||
      SendPayload(SENSOR2PORT, prio_normal);
 | 
			
		||||
      break;
 | 
			
		||||
#endif
 | 
			
		||||
#if (HAS_SENSOR_3)
 | 
			
		||||
    case SENSOR3_DATA:
 | 
			
		||||
      payload.reset();
 | 
			
		||||
      payload.addSensor(sensor_read(3));
 | 
			
		||||
      SendPayload(SENSOR3PORT, prio_normal);
 | 
			
		||||
      break;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (defined BAT_MEASURE_ADC || defined HAS_PMU)
 | 
			
		||||
    case BATT_DATA:
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,14 @@
 | 
			
		||||
#include "globals.h"
 | 
			
		||||
#include "sensor.h"
 | 
			
		||||
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
#include "payload.h"
 | 
			
		||||
#include "corona.h"
 | 
			
		||||
#include "macsniff.h"
 | 
			
		||||
 | 
			
		||||
extern PayloadConvert payload;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Local logging tag
 | 
			
		||||
static const char TAG[] = __FILE__;
 | 
			
		||||
 | 
			
		||||
@ -47,10 +55,14 @@ uint8_t *sensor_read(uint8_t sensor) {
 | 
			
		||||
  case 1:
 | 
			
		||||
 | 
			
		||||
    // insert user specific sensor data frames here */
 | 
			
		||||
#if (COUNT_CWA)
 | 
			
		||||
    payload.addCount( cwa_report(), MAC_SNIFF_BLE_CWA);
 | 
			
		||||
#else
 | 
			
		||||
    buf[0] = length;
 | 
			
		||||
    buf[1] = 0x01;
 | 
			
		||||
    buf[2] = 0x02;
 | 
			
		||||
    buf[3] = 0x03;
 | 
			
		||||
#endif
 | 
			
		||||
    break;
 | 
			
		||||
 | 
			
		||||
  case 2:
 | 
			
		||||
@ -71,4 +83,4 @@ uint8_t *sensor_read(uint8_t sensor) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return buf;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user