Reading a pulse train

ignoring the 75uSec start/end pulse the sequence {0xAA,0x0d,0x12,0x34,0x56} would look like (500uSec pulse width)

this may give you some ideas (for a ESP32)

// ESP32 - measure pulse width and rising edge-to-edge time using timer1 pins 16 and 17

// updated for Arduino ESP32 core 3.0 see
// https://docs.espressif.com/projects/arduino-esp32/en/latest/api/timer.html

// note using hw_timer_t or micros() give similar values
hw_timer_t *Timer1_Cfg = NULL;  // timer object

// arrays to hold pulse timing data
uint64_t risingTime[500] = { 0 }, fallingTime[500] = { 0 };
int riseIndex = 0, fallIndex = 0;
long int millisTimeOut=0;
// rising edge interrupt read time in uSec
void IRAM_ATTR rising() {
  if(riseIndex >= sizeof(risingTime)) return;
  risingTime[riseIndex++] = timerReadMicros(Timer1_Cfg);
  millisTimeOut=millis();
}

// falling edge interrupt read time in uSec
void IRAM_ATTR falling() {
  if(fallIndex >= sizeof(fallingTime)) return;
  fallingTime[fallIndex++] = (timerReadMicros(Timer1_Cfg));
}

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.printf("\n\nESP32 measure pins 16 and 17 pulse information \n");
  //Timer1_Cfg = timerBegin(0, 80, true);           // API 2.x setup timer for 1uSec
  if ((Timer1_Cfg = timerBegin(1000000)) == NULL)  // API 3.0 setup timer for 1uSec
    Serial.println("timerBegin Failed!!");
  Serial.print("timerBegin() OK frequenmcy ");
  Serial.println(timerGetFrequency(Timer1_Cfg));
  //  setup interrput routines - connect signal to pins 16 and 17
  attachInterrupt(digitalPinToGPIONumber(16), rising, RISING);    // detect rising edge on pin 16
  attachInterrupt(digitalPinToGPIONumber(17), falling, FALLING);  // detect falling edge on pin 17
  Serial.println("displaying results");
}

void loop() {  
  // if 2 seconds have elapsed since last redaing print results
  if(riseIndex > 0 && millis()-millisTimeOut>2000) {//timerReadMicros(Timer1_Cfg)-risingTime[riseIndex-1]>2e6) {
    for (int i = 0; i < riseIndex; i++) {
      Serial.printf("rise %lld fall %lld period %lld\n",
                    risingTime[i], fallingTime[i], fallingTime[i] - risingTime[i]);
      Serial.printf("fall %lld rise %lld period %lld\n",
                    fallingTime[i], risingTime[i + 1], risingTime[i + 1] - fallingTime[i]);
    }
    Serial.print("\npulse width counters ");
    for (int i = 0; i < riseIndex; i++) {
      // calculate pulse timing - add 100 in case readings are less than 500uSec
      uint64_t bit = fallingTime[i] - risingTime[i] + 100;
      Serial.print(bit / 500);
      if (i + 1 >= riseIndex) break;
      bit = risingTime[i + 1] - fallingTime[i] + 100;
      Serial.print(bit / 500);
    }
    Serial.print("\nbit pattern ");
    for (int i = 0; i < riseIndex; i++) {
      uint64_t bit = fallingTime[i] - risingTime[i] + 100;
      for (int j = 0; j < bit / 500; j++)
        Serial.print('1');
      if (i + 1 >= riseIndex) break;
      bit = risingTime[i + 1] - fallingTime[i] + 100;
      for (int j = 0; j < bit / 500; j++)
        Serial.print('0');
    }
    Serial.println("\n");
    riseIndex=fallIndex=0;
  }
}

pulse sequences give serial monitor output

ESP32 measure pins 16 and 17 pulse information
timerBegin() OK frequenmcy 1000000
displaying results
rise 2939846 fall 2940328 period 482
fall 2940328 rise 2940826 period 498
rise 2940826 fall 2941326 period 500
fall 2941326 rise 2941826 period 500
rise 2941826 fall 2942326 period 500
fall 2942326 rise 2942826 period 500
rise 2942826 fall 2943326 period 500
fall 2943326 rise 2945826 period 2500
rise 2945826 fall 2946826 period 1000
fall 2946826 rise 2947325 period 499
rise 2947325 fall 2947826 period 501
fall 2947826 rise 2949326 period 1500
rise 2949326 fall 2949826 period 500
fall 2949826 rise 2950826 period 1000
rise 2950826 fall 2951326 period 500
fall 2951326 rise 2952826 period 1500
rise 2952826 fall 2953826 period 1000
fall 2953826 rise 2954325 period 499
rise 2954325 fall 2954826 period 501
fall 2954826 rise 2956326 period 1500
rise 2956326 fall 2956825 period 499
fall 2956825 rise 2957326 period 501
rise 2957326 fall 2957826 period 500
fall 2957826 rise 2958326 period 500
rise 2958326 fall 2959326 period 1000
fall 2959326 rise 0 period -2959326

pulse width counters 1111111521131213211311112
bit pattern 101010100000110100010010001101000101011

rise 17666823 fall 17667312 period 489
fall 17667312 rise 17667809 period 497
rise 17667809 fall 17668309 period 500
fall 17668309 rise 17668809 period 500
rise 17668809 fall 17669309 period 500
fall 17669309 rise 17669809 period 500
rise 17669809 fall 17670309 period 500
fall 17670309 rise 17672809 period 2500
rise 17672809 fall 17673809 period 1000
fall 17673809 rise 17674309 period 500
rise 17674309 fall 17674809 period 500
fall 17674809 rise 17676309 period 1500
rise 17676309 fall 17676809 period 500
fall 17676809 rise 17677809 period 1000
rise 17677809 fall 17678309 period 500
fall 17678309 rise 17679809 period 1500
rise 17679809 fall 17680809 period 1000
fall 17680809 rise 17681309 period 500
rise 17681309 fall 17681809 period 500
fall 17681809 rise 17683309 period 1500
rise 17683309 fall 17683809 period 500
fall 17683809 rise 17684309 period 500
rise 17684309 fall 17684809 period 500
fall 17684809 rise 17685309 period 500
rise 17685309 fall 17686309 period 1000
fall 17686309 rise 0 period -17686309

pulse width counters 1111111521131213211311112
bit pattern 101010100000110100010010001101000101011

rise 41859928 fall 41860418 period 490
fall 41860418 rise 41860916 period 498
rise 41860916 fall 41861416 period 500
fall 41861416 rise 41861916 period 500
rise 41861916 fall 41862416 period 500
fall 41862416 rise 41862916 period 500
rise 41862916 fall 41863415 period 499
fall 41863415 rise 41865916 period 2501
rise 41865916 fall 41866915 period 999
fall 41866915 rise 41867415 period 500
rise 41867415 fall 41867915 period 500
fall 41867915 rise 41869416 period 1501
rise 41869416 fall 41869915 period 499
fall 41869915 rise 41870915 period 1000
rise 41870915 fall 41871416 period 501
fall 41871416 rise 41872915 period 1499
rise 41872915 fall 41873915 period 1000
fall 41873915 rise 41874415 period 500
rise 41874415 fall 41874915 period 500
fall 41874915 rise 41876415 period 1500
rise 41876415 fall 41876915 period 500
fall 41876915 rise 41877415 period 500
rise 41877415 fall 41877915 period 500
fall 41877915 rise 41878415 period 500
rise 41878415 fall 41879415 period 1000
fall 41879415 rise 0 period -41879415

pulse width counters 1111111521131213211311112
bit pattern 101010100000110100010010001101000101011

may give you some ideas