Test Code for TEA5767 radio module

Dependencies:   MODSERIAL TEA5767 mbed

Committer:
edodm85
Date:
Thu Oct 03 19:18:22 2013 +0000
Revision:
0:de2102ba3121
Child:
1:6ad6d1d3bbdf
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:de2102ba3121 1 #include "main.h"
edodm85 0:de2102ba3121 2
edodm85 0:de2102ba3121 3
edodm85 0:de2102ba3121 4
edodm85 0:de2102ba3121 5 void rxCallback(MODSERIAL_IRQ_INFO *q)
edodm85 0:de2102ba3121 6 {
edodm85 0:de2102ba3121 7 new_send = true;
edodm85 0:de2102ba3121 8 }
edodm85 0:de2102ba3121 9
edodm85 0:de2102ba3121 10
edodm85 0:de2102ba3121 11 int main()
edodm85 0:de2102ba3121 12 {
edodm85 0:de2102ba3121 13 // INIT WATCHDOG
edodm85 0:de2102ba3121 14 w.kick(2.5);
edodm85 0:de2102ba3121 15
edodm85 0:de2102ba3121 16 pc.baud(921600);
edodm85 0:de2102ba3121 17 pc.attach(&rxCallback, MODSERIAL::RxIrq);
edodm85 0:de2102ba3121 18
edodm85 0:de2102ba3121 19 if(radio.CheckDevice() == 0)
edodm85 0:de2102ba3121 20 {
edodm85 0:de2102ba3121 21 pc.printf("Addr I2C found\r\n");
edodm85 0:de2102ba3121 22 led2 = 1;
edodm85 0:de2102ba3121 23 }else
edodm85 0:de2102ba3121 24 {
edodm85 0:de2102ba3121 25 pc.printf("Addr I2C not found\r\n");
edodm85 0:de2102ba3121 26 led2 = 0;
edodm85 0:de2102ba3121 27 }
edodm85 0:de2102ba3121 28
edodm85 0:de2102ba3121 29 while(1)
edodm85 0:de2102ba3121 30 {
edodm85 0:de2102ba3121 31 if(new_send){
edodm85 0:de2102ba3121 32 int i = 0;
edodm85 0:de2102ba3121 33
edodm85 0:de2102ba3121 34 while(pc.readable())
edodm85 0:de2102ba3121 35 {
edodm85 0:de2102ba3121 36 word[i] = pc.getc();
edodm85 0:de2102ba3121 37 i++;
edodm85 0:de2102ba3121 38 }
edodm85 0:de2102ba3121 39 parse_cmd();
edodm85 0:de2102ba3121 40 }
edodm85 0:de2102ba3121 41 wait_ms(50);
edodm85 0:de2102ba3121 42 w.kick();
edodm85 0:de2102ba3121 43 }
edodm85 0:de2102ba3121 44 }
edodm85 0:de2102ba3121 45
edodm85 0:de2102ba3121 46
edodm85 0:de2102ba3121 47 // US/EUROPE 87.5-108MHz JAPANESE 76-91MHz
edodm85 0:de2102ba3121 48 float i = 0.2;
edodm85 0:de2102ba3121 49 void parse_cmd()
edodm85 0:de2102ba3121 50 {
edodm85 0:de2102ba3121 51 new_send = false;
edodm85 0:de2102ba3121 52
edodm85 0:de2102ba3121 53 if(strncmp("freq", word, 4) == 0)
edodm85 0:de2102ba3121 54 {
edodm85 0:de2102ba3121 55 char word_temp[6];
edodm85 0:de2102ba3121 56 strncpy(word_temp, &word[5], 6);
edodm85 0:de2102ba3121 57
edodm85 0:de2102ba3121 58 n = atof(word_temp); // Convert string to double
edodm85 0:de2102ba3121 59
edodm85 0:de2102ba3121 60 if((n >= StartFreq) && (n <= EndFreq))
edodm85 0:de2102ba3121 61 {
edodm85 0:de2102ba3121 62 radio.SetFrequency(n);
edodm85 0:de2102ba3121 63
edodm85 0:de2102ba3121 64 wait_ms(200);
edodm85 0:de2102ba3121 65
edodm85 0:de2102ba3121 66 pc.printf("signal: %2.0d", radio.SignalLevel());
edodm85 0:de2102ba3121 67 pc.printf("freq: %000.2f ", radio.FreqCurrent());
edodm85 0:de2102ba3121 68 delete [] reg;
edodm85 0:de2102ba3121 69 wait_ms(100);
edodm85 0:de2102ba3121 70
edodm85 0:de2102ba3121 71 }else
edodm85 0:de2102ba3121 72 {
edodm85 0:de2102ba3121 73 pc.printf("Out of range \r\n");
edodm85 0:de2102ba3121 74 }
edodm85 0:de2102ba3121 75 }else
edodm85 0:de2102ba3121 76 if(strncmp("available", word, 9) == 0)
edodm85 0:de2102ba3121 77 {
edodm85 0:de2102ba3121 78 pc.printf("\r\n");
edodm85 0:de2102ba3121 79 pc.printf("Current_Frequency: %.2fMHz\r\n", radio.FreqCurrent());
edodm85 0:de2102ba3121 80 pc.printf("Signal_Level: %2.0d\r\n", radio.SignalLevel());
edodm85 0:de2102ba3121 81 }else
edodm85 0:de2102ba3121 82 if(strncmp("search_up", word, 9) == 0)
edodm85 0:de2102ba3121 83 {
edodm85 0:de2102ba3121 84 float freq_av = radio.FreqCurrent();
edodm85 0:de2102ba3121 85 if(freq_av-i > 108)
edodm85 0:de2102ba3121 86 {
edodm85 0:de2102ba3121 87 freq_av = 108;
edodm85 0:de2102ba3121 88 }
edodm85 0:de2102ba3121 89 radio.SearchUp(freq_av+i);
edodm85 0:de2102ba3121 90 wait_ms(300);
edodm85 0:de2102ba3121 91 pc.printf("signal: %2.0d", radio.SignalLevel());
edodm85 0:de2102ba3121 92 pc.printf("freq: %000.2f ", radio.FreqCurrent());
edodm85 0:de2102ba3121 93 }else
edodm85 0:de2102ba3121 94 if(strncmp("search_down", word, 11) == 0)
edodm85 0:de2102ba3121 95 {
edodm85 0:de2102ba3121 96 float freq_av = radio.FreqCurrent();
edodm85 0:de2102ba3121 97 if(freq_av-i < 87.5)
edodm85 0:de2102ba3121 98 {
edodm85 0:de2102ba3121 99 freq_av = 87.5;
edodm85 0:de2102ba3121 100 }
edodm85 0:de2102ba3121 101 radio.SearchUp(freq_av-i);
edodm85 0:de2102ba3121 102 wait_ms(300);
edodm85 0:de2102ba3121 103 pc.printf("signal: %2.0d", radio.SignalLevel());
edodm85 0:de2102ba3121 104 pc.printf("freq: %000.2f ", radio.FreqCurrent());
edodm85 0:de2102ba3121 105 }else
edodm85 0:de2102ba3121 106 if(strncmp("band", word, 4) == 0)
edodm85 0:de2102ba3121 107 {
edodm85 0:de2102ba3121 108 char word_temp[2];
edodm85 0:de2102ba3121 109 strncpy(word_temp, &word[5], 2);
edodm85 0:de2102ba3121 110 pc.printf("string: %s\r\n", word_temp);
edodm85 0:de2102ba3121 111
edodm85 0:de2102ba3121 112 if(strncmp("EU", word_temp, 2) == 0)
edodm85 0:de2102ba3121 113 {
edodm85 0:de2102ba3121 114 radio.SetBand('e');
edodm85 0:de2102ba3121 115 StartFreq = 87.5;
edodm85 0:de2102ba3121 116 EndFreq = 108;
edodm85 0:de2102ba3121 117 }else
edodm85 0:de2102ba3121 118 if(strncmp("JP", word_temp, 2) == 0)
edodm85 0:de2102ba3121 119 {
edodm85 0:de2102ba3121 120 radio.SetBand('j');
edodm85 0:de2102ba3121 121 StartFreq = 76;
edodm85 0:de2102ba3121 122 EndFreq = 91;
edodm85 0:de2102ba3121 123 }
edodm85 0:de2102ba3121 124 }
edodm85 0:de2102ba3121 125
edodm85 0:de2102ba3121 126 memset(word, 0, sizeof(word));
edodm85 0:de2102ba3121 127 }
edodm85 0:de2102ba3121 128