irq code sanitizations
This commit is contained in:
		
							parent
							
								
									51917b79d3
								
							
						
					
					
						commit
						aeccb59f55
					
				@ -19,7 +19,7 @@ void defaultConfig() {
 | 
				
			|||||||
  cfg.screenon = 1;           // 0=disabled, 1=enabled
 | 
					  cfg.screenon = 1;           // 0=disabled, 1=enabled
 | 
				
			||||||
  cfg.countermode = 0;        // 0=cyclic, 1=cumulative, 2=cyclic confirmed
 | 
					  cfg.countermode = 0;        // 0=cyclic, 1=cumulative, 2=cyclic confirmed
 | 
				
			||||||
  cfg.rssilimit = 0;          // threshold for rssilimiter, negative value!
 | 
					  cfg.rssilimit = 0;          // threshold for rssilimiter, negative value!
 | 
				
			||||||
  cfg.sendcycle = SEND_CYCLE;  // payload send cycle [seconds/2]
 | 
					  cfg.sendcycle = SENDCYCLE;  // payload send cycle [seconds/2]
 | 
				
			||||||
  cfg.wifichancycle =
 | 
					  cfg.wifichancycle =
 | 
				
			||||||
      WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100]
 | 
					      WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100]
 | 
				
			||||||
  cfg.blescantime =
 | 
					  cfg.blescantime =
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										32
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								src/main.cpp
									
									
									
									
									
								
							@ -45,10 +45,8 @@ Tasks using i2c bus all must have same priority, because using mutex semaphore
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ESP32 hardware timers
 | 
					// ESP32 hardware timers
 | 
				
			||||||
-------------------------------------------------------------------------------
 | 
					-------------------------------------------------------------------------------
 | 
				
			||||||
 0	displayIRQ -> display refresh -> 40ms (DISPLAYREFRESH_MS in paxcounter.conf)
 | 
					 0	displayIRQ -> display refresh -> 40ms (DISPLAYREFRESH_MS in
 | 
				
			||||||
 1  ppsIRQ -> pps clock irq -> 1sec
 | 
					paxcounter.conf) 1  ppsIRQ -> pps clock irq -> 1sec 2	unused 3	unused
 | 
				
			||||||
 2	unused
 | 
					 | 
				
			||||||
 3	unused
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Interrupt routines
 | 
					// Interrupt routines
 | 
				
			||||||
@ -316,15 +314,6 @@ void setup() {
 | 
				
			|||||||
  strcat_P(features, " OLED");
 | 
					  strcat_P(features, " OLED");
 | 
				
			||||||
  DisplayState = cfg.screenon;
 | 
					  DisplayState = cfg.screenon;
 | 
				
			||||||
  init_display(PRODUCTNAME, PROGVERSION); // note: blocking call
 | 
					  init_display(PRODUCTNAME, PROGVERSION); // note: blocking call
 | 
				
			||||||
 | 
					 | 
				
			||||||
  // setup display refresh trigger IRQ using esp32 hardware timer
 | 
					 | 
				
			||||||
  // https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/
 | 
					 | 
				
			||||||
  // prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 0, count up
 | 
					 | 
				
			||||||
  displayIRQ = timerBegin(0, 80, true);
 | 
					 | 
				
			||||||
  // interrupt handler DisplayIRQ, triggered by edge
 | 
					 | 
				
			||||||
  timerAttachInterrupt(displayIRQ, &DisplayIRQ, true);
 | 
					 | 
				
			||||||
  // reload interrupt after each trigger of display refresh cycle
 | 
					 | 
				
			||||||
  timerAlarmWrite(displayIRQ, DISPLAYREFRESH_MS * 1000, true);
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// show payload encoder
 | 
					// show payload encoder
 | 
				
			||||||
@ -395,16 +384,25 @@ void setup() {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // starting timers and interrupts
 | 
				
			||||||
  assert(irqHandlerTask != NULL); // has interrupt handler task started?
 | 
					  assert(irqHandlerTask != NULL); // has interrupt handler task started?
 | 
				
			||||||
                                  // start timer triggered interrupts
 | 
					 | 
				
			||||||
  ESP_LOGI(TAG, "Starting Timers...");
 | 
					  ESP_LOGI(TAG, "Starting Timers...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // display interrupt
 | 
				
			||||||
#ifdef HAS_DISPLAY
 | 
					#ifdef HAS_DISPLAY
 | 
				
			||||||
 | 
					  // https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/
 | 
				
			||||||
 | 
					  // prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 0, count up
 | 
				
			||||||
 | 
					  displayIRQ = timerBegin(0, 80, true);
 | 
				
			||||||
 | 
					  timerAttachInterrupt(displayIRQ, &DisplayIRQ, true);
 | 
				
			||||||
 | 
					  timerAlarmWrite(displayIRQ, DISPLAYREFRESH_MS * 1000, true);
 | 
				
			||||||
  timerAlarmEnable(displayIRQ);
 | 
					  timerAlarmEnable(displayIRQ);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  sendcycler.attach(SEND_CYCLE * 2, sendcycle);
 | 
					
 | 
				
			||||||
 | 
					  // cyclic function interrupts
 | 
				
			||||||
 | 
					  sendcycler.attach(SENDCYCLE * 2, sendcycle);
 | 
				
			||||||
  housekeeper.attach(HOMECYCLE, housekeeping);
 | 
					  housekeeper.attach(HOMECYCLE, housekeeping);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// start button interrupt
 | 
					// button interrupt
 | 
				
			||||||
#ifdef HAS_BUTTON
 | 
					#ifdef HAS_BUTTON
 | 
				
			||||||
#ifdef BUTTON_PULLUP
 | 
					#ifdef BUTTON_PULLUP
 | 
				
			||||||
  attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), ButtonIRQ, RISING);
 | 
					  attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), ButtonIRQ, RISING);
 | 
				
			||||||
@ -424,7 +422,7 @@ void setup() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined HAS_IF482 || defined HAS_DCF77
 | 
					#if defined HAS_IF482 || defined HAS_DCF77
 | 
				
			||||||
#ifndef TIME_SYNC_INTERVAL
 | 
					#ifndef TIME_SYNC_INTERVAL
 | 
				
			||||||
#error you must define TIME_SNYC_INTERVAL in paxcounter.conf
 | 
					#error for clock controller function TIME_SNYC_INTERVAL must be defined in paxcounter.conf
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  ESP_LOGI(TAG, "Starting Clock Controller...");
 | 
					  ESP_LOGI(TAG, "Starting Clock Controller...");
 | 
				
			||||||
  clock_init();
 | 
					  clock_init();
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
#define VERBOSE                         1       // comment out to silence the device, for mute use build option
 | 
					#define VERBOSE                         1       // comment out to silence the device, for mute use build option
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Payload send cycle and encoding
 | 
					// Payload send cycle and encoding
 | 
				
			||||||
#define SEND_CYCLE                      30      // payload send cycle [seconds/2], 0 .. 255
 | 
					#define SENDCYCLE                       30      // payload send cycle [seconds/2], 0 .. 255
 | 
				
			||||||
#define PAYLOAD_ENCODER                 2       // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
 | 
					#define PAYLOAD_ENCODER                 2       // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Set this to include BLE counting and vendor filter functions
 | 
					// Set this to include BLE counting and vendor filter functions
 | 
				
			||||||
 | 
				
			|||||||
@ -457,7 +457,7 @@ void PayloadConvert::addButton(uint8_t value) {
 | 
				
			|||||||
void PayloadConvert::addTime(time_t value) {
 | 
					void PayloadConvert::addTime(time_t value) {
 | 
				
			||||||
#if (PAYLOAD_ENCODER == 4)
 | 
					#if (PAYLOAD_ENCODER == 4)
 | 
				
			||||||
  uint32_t t = (uint32_t)value;
 | 
					  uint32_t t = (uint32_t)value;
 | 
				
			||||||
  uint32_t tx_period = (uint32_t)SEND_CYCLE * 2;
 | 
					  uint32_t tx_period = (uint32_t)SENDCYCLE * 2;
 | 
				
			||||||
  buffer[cursor++] = 0x03; // set config mask to UTCTime + TXPeriod
 | 
					  buffer[cursor++] = 0x03; // set config mask to UTCTime + TXPeriod
 | 
				
			||||||
  // UTCTime in seconds
 | 
					  // UTCTime in seconds
 | 
				
			||||||
  buffer[cursor++] = (byte)((t & 0xFF000000) >> 24);
 | 
					  buffer[cursor++] = (byte)((t & 0xFF000000) >> 24);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user