亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? rds解碼過程
?? C
?? 第 1 頁 / 共 3 頁
字號:
            if (j >= 1 && j <= 204) {
              for(i = 0; i < sizeof(alternativeFrequencyCodes); i++) {
                if (alternativeFrequencyCodes[i] == j) {
                  break;
                } 
                if (alternativeFrequencyCodes[i] == 0) {
                  alternativeFrequencyCodes[i] = j;
                  printf_P(PSTR("AF: 0x%02X, "), alternativeFrequencyCodes[i]);
                  
                  m = 875 + j;
                  printf_P(PSTR("%u.%uMHz.\r\n"), m / 10, m % 10);
                  break;
                }
              }
            }
            
            if (j == 224 && alternativeFrequencyCodes[25] != j) {
              alternativeFrequencyCodes[25] = 224;
              printf_P(PSTR("AF: 0x%02X, This station has no alternate frequenties.\r\n"), j);
            }
          }
          
          //TODO: LF/MF untested because lack of LM/MF station
          //Station transmits on LF/MF
          if (block3 == 250 && alternativeFrequencyCodes[26] != block3) {
            alternativeFrequencyCodes[26] = block3;
            j = block3 / 256;
            
            printf_P(PSTR("AF: 0x%02X 0x%02X, "), block3, j);
            
            //LF 153kHz-279kHz in 9 KHz steps
            if (j >= 1 && j <= 15) {
              m = 144 + (j * 9);
              printf_P(PSTR("%uKHz.\r\n"), m);
            } else
            //MF 531KHz-1602kHz in 9 KHz steps
            if (j >= 16 && j <= 135) {
              m = 387 + (j * 9);
              printf_P(PSTR("%uKHz.\r\n"), m);
            }
          }
        }
        //version B contains PI code in block3
  
      } else
      //Type 1 groups: Programme Item Number and slow labelling codes
      if (groupType == 1) {
      
        if (groupVersion == 'A') {
          //TODO: 5 bit Radio Paging Codes, bits 0-4 block2
          
          //TODO: Add textual description of LA
          //Linkage Actuator
          if (linkageActuator != (block3 & _BV(15))) {
            linkageActuator = (block3 & _BV(15));
            printf_P(PSTR("LA: 0x%02X\r\n"), linkageActuator);
          }
          
          //store variant code, bits 13-15
          i = (block3 / 0x2000) & 0x07;
          
          //TODO: Paging
          if (i == 0) {
            
            //TODO: Add textual description of ECC code
            //Extended Country Code, bits 0-7 block3
            if (extendedCountryCode != (block3 & 0xFF)) {
              extendedCountryCode = (block3 & 0xFF);
              printf_P(PSTR("ECC: 0x%02X\r\n"), extendedCountryCode);
            }
            
          
          } else 
          //TODO: TMC identification
          if (i == 1) {
          
          } else
          //TODO: Paging identification
          if (i == 2) {
          
          } else
          //TODO: Language codes
          if (i == 3) {
          
          } else
          //TODO: not assigned
          if (i == 4) {
          
          } else
          //TODO: not assigned
          if (i == 5) {
          
          } else
          //TODO: For use by broadcasters
          if (i == 6) {
          
          } else
          //TODO: Identification of EWS channel
          if (i == 7) {
          
          }
        }
        
        //TODO: Programme Item Number, block 4
      
      } else 
      //Type 2 groups: RadioText
      if (groupType == 2) {
      
        //text version A or B, bit 5 block 2
        if (block2 & 0x10) 
          textVersion = 'B';
        else
          textVersion = 'A';
        
        //block2 bit 0-3
        textSegmentAddress = (block2 & 0x0F);
        
        //clean radioText when version changes
        if (textVersionPrevious != 0 &&
            textVersionPrevious != textVersion) {
            
          for(i = 0; i < sizeof(radioText); i++) {
            radioText[i] = 0;
           }
           
          textSegmentAddressPrevious = 0;
          textSegmentAddress0Seen = 0;
        }
        
        //detected new start of text segment, normally address 0x00
        if (textSegmentAddressPrevious > textSegmentAddress) {
            
          if (groupVersion == 'A')
            h = 64;
          else
            h = 32;
          
          //detect new radioText
          j = 0;
          for (i = 0; i < h; i++) {
            if (radioText[i] != 0 && radioText[i] != ' ') {
              if (radioText[i] != radioTextPrevious[i]) {
                j = 1;
                break;
              }
            }
          }
          
          //only print when we have received address 0 once.
          if (textSegmentAddress0Seen == 0)
            j = 0;
           
          if (j) {
            printf_P(PSTR("RT%c: "), textVersion);

            for (i = 0; i < h; i++) {
            
              if (radioText[i] == 0) 
                break;
              else if (!(radioText[i] == '\r' || radioText[i] == '\n'))
                printf_P(PSTR("%c"), radioText[i]);

                
              radioTextPrevious[i] = radioText[i];
            }
            printf_P(PSTR("\r\n"));
          }
          
          
        }
        
        //64 bit messages in block 3 & 4
        if (groupVersion == 'A') {
          
          radioText[(textSegmentAddress * 4)] = block3 / 256;
          radioText[(textSegmentAddress * 4) + 1] = block3;
          radioText[(textSegmentAddress * 4) + 2] = block4 / 256;
          radioText[(textSegmentAddress * 4) + 3] = block4;
          
          //fill bytes smaller then textSegmentAddress with spaces when they are '0'
          if (textSegmentAddress > 0) {
            for (i = 0; i < (textSegmentAddress - 1) * 4; i++) {
              if (radioText[i] == 0)
                radioText[i] = ' ';
            }
          }
          
        }
        //TODO: 32 bit messages not tested because of lack station transmitting it.
        //32 bit messages in block 4
        else {
          radioText[(textSegmentAddress * 2)] = block4 / 256;
          radioText[(textSegmentAddress * 2) + 1] = block4;
          
          //fill bytes smaller then textSegmentAddress with spaces when they are '0'
          if (textSegmentAddress > 0) {
            for (i = 0; i < (textSegmentAddress - 1) * 2; i++) {
              if (radioText[i] == 0)
                radioText[i] = ' ';
            }
          }
          
        }
        
        if (textSegmentAddress == 0)
          textSegmentAddress0Seen = 1;
        
        
        textVersionPrevious = textVersion;
        textSegmentAddressPrevious = textSegmentAddress;
        
      } else
      //Type 3A groups: Application identification for Open data
      if (groupType == 3 && groupVersion == 'A') {
      
      } else
      //Type 3B groups: Open Data Application
      if (groupType == 3 && groupVersion == 'B') {
      
      } else
      //Type 4A groups : Clock-time and date
      if (groupType == 4 && groupVersion == 'A') {
      
        //bits 0-5 are in block4 as bits 6-11
        utcMinutes = (block4  / 64) & 0x3F;
      
        if (utcMinutesPrevious != utcMinutes) {
        
          utcMinutesPrevious = utcMinutes;
        
          //bits 0-14 are in block3 as bits 1-15
          //bits 15-16 are in block2 as bits 0-1
          modifiedJulianDay = (block3 / 2) + (block2 & 0x03) * 32768;
          
          //bits 0-3 are in block4 as bits 12-15
          //bit 4 is in block3 as bit 1
          utcHours = (block4 / 4096) + (block3 & 0x01) * 16;
          
          //local time offset are bits 0-4 in block 4
          localTimeOffset = block4 & 0x1F;
          //sign is in bit 5 of block4, 0=+ 1=-
          if (block4 & 0x20) 
            localSign = '-';
          else
            localSign = '+';
          
          //multiply by 30 so that we have offset in minutes (offset is in multiples of .5 hours)
          localTimeOffset *= 30;
  
          printf_P(PSTR("CT: 0x%01X%04X%04X, "), (block2 & 0x03), block3, block4);
          
          //Modified Julian date to year-month-day conversion
          utcYear = floor((modifiedJulianDay - 15078.2) / 365.25);
          utcMonth = floor((modifiedJulianDay - 14956.1 - floor(utcYear * 365.25)) / 30.6001);
          utcDay = modifiedJulianDay - 14956 - floor(utcYear * 365.25) - floor(utcMonth * 30.6001);
        
          if (utcMonth == 14 || utcMonth == 15)
            i = 1; 
          else 
            i = 0;
        
          utcYear = utcYear + i + 1900;
          utcMonth = utcMonth - 1 - (i * 12);
  
          printf_P(PSTR("UTC %04u-%02u-%02u (MJD %u) %02u:%02u:00 %c%02u:%02u, "),
                   utcYear, utcMonth, utcDay,
                   modifiedJulianDay,
                   utcHours, utcMinutes, localSign,
                   localTimeOffset / 60, localTimeOffset % 60);
          
          //TODO: half hour timezones and negative timezones not tested because lack of station transmitting it.
          //lets calulate local time
          if (localSign == '-') {
            localHours = utcHours - (localTimeOffset / 60);
            localMinutes = utcMinutes - (localTimeOffset % 60);
          } else {
            localHours = utcHours + (localTimeOffset / 60);
            localMinutes = utcMinutes + (localTimeOffset % 60);
          }
          
          if (localMinutes < 0) {
            localMinutes += 60;
            localHours--;
          }
            
          if (localMinutes > 59) {
            localMinutes -= 60;
            localHours++;
          }
          
          if (localHours < 0)
            localHours += 24;
  
          if (localHours > 23)
            localHours -= 24;
            
          printf_P(PSTR("TIME %02u:%02u:00\r\n"), localHours, localMinutes);
        }

      } else
      //Type 4B groups: Open data application
      if (groupType == 4 && groupVersion == 'B') {
        
      } else
      //Type 5 groups: Transparent data channels or ODA
      if (groupType == 5) {
      
      } else
      //Type 6 groups: In-house applications or ODA
      if (groupType == 6) {
      
      } else 
      //Type 7A groups: Radio Paging or ODA
      if (groupType == 7 && groupVersion == 'A') {
      
      } else 
      //Type 7B groups: Open data application
      if (groupType == 7 && groupVersion == 'B') {
      
      } else 
      //Type 8 groups: Traffic Message Channel or ODA
      if (groupType == 8) {
      
      } else 
      //Type 9 groups: Emergency warning systems or ODA
      if (groupType == 9) {
      
      } else 
      //Type 10A groups: Programme Type Name
      if (groupType == 10 && groupVersion == 'A') {
      
      } else
      //Type 10B groups: Open data
      if (groupType == 10 && groupVersion == 'A') {
      
      } else
      //Type 11 groups: Open Data Application
      if (groupType == 11) {
      
      } else 
      //Type 12 groups: Open Data Application
      if (groupType == 12) {
      
      } else 
      //Type 13A groups: Enhanced Radio Paging or ODA
      if (groupType == 13 && groupVersion == 'A') {
      
      } else
      //Type 13B groups: Open Data Application
      if (groupType == 13 && groupVersion == 'B') {
      
      } else
      //Type 14 groups: Enhanced Other Networks information
      if (groupType == 14) {
      
      } else
      //Type 15A groups: 'currently unavailable'
      if (groupType == 15 && groupVersion == 'A') {
      
      } else
      //Type 15B groups: Fast basic tuning and switching information
      if (groupType == 15 && groupVersion == 'B') {
      
      }
    } else {
      sei();
    }
    
    
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色婷婷| 国产+成+人+亚洲欧洲自线| 99精品久久久久久| 精品欧美一区二区久久| 一区二区三区鲁丝不卡| www.亚洲精品| 88在线观看91蜜桃国自产| 一区二区三区欧美视频| 91在线你懂得| 亚洲午夜三级在线| 欧美性猛片xxxx免费看久爱| 一区二区三区在线观看网站| 不卡的av电影| 一区二区激情小说| 色综合一个色综合| 国产精品久久三区| 欧美色图免费看| 视频一区欧美日韩| 亚洲精品一区在线观看| 国产成人免费av在线| 亚洲天堂2014| 欧美三级视频在线播放| 日本中文一区二区三区| 日韩一区二区高清| 久久国产尿小便嘘嘘尿| 国产婷婷色一区二区三区在线| 成人开心网精品视频| 亚洲成人资源在线| 久久精品夜色噜噜亚洲aⅴ| 国产成人精品亚洲日本在线桃色| 国产成人免费在线观看| 亚洲黄色av一区| 日韩精品专区在线影院重磅| 不卡一区二区三区四区| 一区二区在线免费观看| 久久久久国产精品麻豆| 欧美又粗又大又爽| 丰满岳乱妇一区二区三区| 亚洲二区视频在线| 国产精品丝袜91| 日韩免费一区二区| 精品视频一区二区不卡| 国产成人8x视频一区二区| 亚洲最新在线观看| 国产视频一区在线观看| 日韩欧美区一区二| 欧美男男青年gay1069videost| 国产精品亚洲专一区二区三区 | 日韩免费观看高清完整版| 91美女在线看| av中文字幕一区| 麻豆精品在线播放| 日韩成人一级大片| 午夜婷婷国产麻豆精品| 亚洲综合免费观看高清完整版在线 | 国产精品免费aⅴ片在线观看| 5566中文字幕一区二区电影| 亚洲另类在线视频| 国产精品福利电影一区二区三区四区| 日韩三级伦理片妻子的秘密按摩| 777欧美精品| 久久色视频免费观看| 欧美v日韩v国产v| 久久网站最新地址| 国产精品久久久一区麻豆最新章节| 久久精品一区四区| 中文字幕精品综合| 亚洲另类春色国产| 日韩av一级电影| 国产成人av自拍| 91久久香蕉国产日韩欧美9色| 欧美偷拍一区二区| 欧美精品一区二| 亚洲天堂久久久久久久| 蜜桃视频在线观看一区| 国产91精品一区二区麻豆网站| 国产麻豆日韩欧美久久| 色哟哟亚洲精品| 日韩欧美一区二区在线视频| 国产精品视频观看| 日韩电影在线观看电影| 丁香一区二区三区| 欧美一区欧美二区| 一区二区三区在线视频播放| 国产在线看一区| 欧美日韩一区二区三区视频| 久久婷婷国产综合精品青草| 亚洲男女一区二区三区| 精品一区二区三区欧美| 欧美日韩国产大片| 国产精品国产自产拍高清av| 久久国产生活片100| 国产精品久久福利| 经典一区二区三区| 9191精品国产综合久久久久久 | 色成人在线视频| 国产女主播一区| 国内偷窥港台综合视频在线播放| 欧美久久久影院| 亚洲综合一区二区精品导航| 国产精品自拍一区| 久久久精品欧美丰满| 麻豆91小视频| 欧美成人aa大片| 九九热在线视频观看这里只有精品| 欧美男人的天堂一二区| 午夜久久福利影院| 91精品国产福利| 日韩电影免费在线| www激情久久| 成人激情黄色小说| 樱花草国产18久久久久| 欧美影院精品一区| 日韩中文字幕91| 2024国产精品| 一本色道久久加勒比精品| 亚洲国产美女搞黄色| 日韩欧美aaaaaa| 99精品视频中文字幕| 亚洲天堂免费看| 日韩一区二区三区视频| 国产在线视视频有精品| 亚洲欧美日韩精品久久久久| 在线观看免费视频综合| 日韩成人伦理电影在线观看| 欧美激情中文字幕| 欧美在线观看18| 国产福利一区二区三区| 亚洲国产美女搞黄色| 中文字幕免费不卡| 51精品国自产在线| 粉嫩av一区二区三区| 99re成人精品视频| 韩国理伦片一区二区三区在线播放| 国产精品丝袜久久久久久app| 91精品久久久久久蜜臀| 色婷婷综合中文久久一本| 国产成人av一区二区三区在线| 亚洲成人动漫精品| 成人免费在线播放视频| 久久久不卡影院| 精品国产一区a| 这里只有精品免费| 色婷婷综合久色| 99re视频精品| 91原创在线视频| 成人爽a毛片一区二区免费| 另类人妖一区二区av| 日韩精品亚洲一区| 丝袜美腿亚洲一区| 日韩专区中文字幕一区二区| 亚洲国产精品久久久久婷婷884 | 亚洲精品国产一区二区精华液| 欧美大胆人体bbbb| 日韩欧美电影在线| 精品国产一区二区三区不卡| 日韩午夜在线影院| 制服.丝袜.亚洲.中文.综合| 这里只有精品免费| 欧美xxxxx裸体时装秀| 精品99一区二区| 国产精品日韩精品欧美在线| 亚洲国产精品av| 中文字幕中文在线不卡住| 亚洲视频综合在线| 亚洲成人久久影院| 天天亚洲美女在线视频| 蜜桃视频在线观看一区二区| 国产精一区二区三区| 成人黄色电影在线| 欧美久久久久免费| 精品欧美久久久| 一本色道久久综合亚洲aⅴ蜜桃 | 国模少妇一区二区三区| 成人爱爱电影网址| 欧美美女一区二区三区| 久久精品无码一区二区三区| 亚洲123区在线观看| 精东粉嫩av免费一区二区三区| a级高清视频欧美日韩| 精品国内二区三区| 亚洲一区在线观看网站| 国产精品一区久久久久| 在线精品亚洲一区二区不卡| 久久免费看少妇高潮| 亚洲资源在线观看| 99精品一区二区| 国产精品久久久久久亚洲伦| 精品中文av资源站在线观看| 欧美片网站yy| 亚洲高清中文字幕| 欧美三级一区二区| 依依成人综合视频| 99久久精品国产毛片| 中文字幕国产一区二区| 丁香亚洲综合激情啪啪综合| 久久久亚洲高清| 国产精品综合一区二区三区| 精品人在线二区三区| 国产一区二区看久久|