News_Reader
Dependencies: FatFileSystem HTTPClient NetServices RPG SDFileSystem TextLCD mbed spxml
Fork of Arduino_MP3_Shield_MP3Player_UI by
main.cpp@2:447591cbba27, 2013-03-06 (annotated)
- Committer:
- cwang365
- Date:
- Wed Mar 06 00:37:29 2013 +0000
- Revision:
- 2:447591cbba27
- Parent:
- 1:0014879fa94f
lab3_news_reader
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mpetersen3 | 0:9cb0b3d1b9e6 | 1 | |
mpetersen3 | 0:9cb0b3d1b9e6 | 2 | #include "mbed.h" |
mpetersen3 | 0:9cb0b3d1b9e6 | 3 | #include "VS1002.h" |
mpetersen3 | 0:9cb0b3d1b9e6 | 4 | #include "TextLCD.h" |
cwang365 | 1:0014879fa94f | 5 | #include "RPG.h" |
cwang365 | 1:0014879fa94f | 6 | #include "EthernetNetIf.h" |
cwang365 | 1:0014879fa94f | 7 | #include "HTTPClient.h" |
cwang365 | 1:0014879fa94f | 8 | #include "SDFileSystem.h" |
cwang365 | 1:0014879fa94f | 9 | #include "fetch.h" |
mpetersen3 | 0:9cb0b3d1b9e6 | 10 | |
cwang365 | 1:0014879fa94f | 11 | #include <string> |
cwang365 | 1:0014879fa94f | 12 | #include <iostream> |
cwang365 | 1:0014879fa94f | 13 | #include <sstream> |
mpetersen3 | 0:9cb0b3d1b9e6 | 14 | |
cwang365 | 1:0014879fa94f | 15 | HTTPClient http1; |
cwang365 | 1:0014879fa94f | 16 | HTTPResult result1; |
cwang365 | 1:0014879fa94f | 17 | EthernetNetIf eth; |
cwang365 | 1:0014879fa94f | 18 | RPG rpg1(p26,p27,p25); |
cwang365 | 1:0014879fa94f | 19 | TextLCD lcd1(p10,p18,p24,p23,p22,p21,TextLCD::LCD16x2); |
cwang365 | 1:0014879fa94f | 20 | VS1002 mp3(p11,p12,p13,p8,"sd", p5,p6,p7,p14,p15,p16,p17,p20); |
cwang365 | 1:0014879fa94f | 21 | SDFileSystem sd(p11, p12, p13, p8, "sd"); |
cwang365 | 1:0014879fa94f | 22 | char *ct[10]= {"/sd/0.txt","/sd/1.txt","/sd/2.txt","/sd/3.txt","/sd/4.txt","/sd/5.txt","/sd/6.txt","/sd/7.txt","/sd/8.txt","/sd/9.txt"}; |
cwang365 | 1:0014879fa94f | 23 | char *mp3ct[10]= {"/sd/0.mp3","/sd/1.mp3","/sd/2.mp3","/sd/3.mp3","/sd/4.mp3","/sd/5.mp3","/sd/6.mp3","/sd/7.mp3","/sd/8.mp3","/sd/9.mp3"}; |
mpetersen3 | 0:9cb0b3d1b9e6 | 24 | |
cwang365 | 1:0014879fa94f | 25 | void download(string voiceurl, int a) |
cwang365 | 1:0014879fa94f | 26 | { |
cwang365 | 1:0014879fa94f | 27 | HTTPFile f(mp3ct[a]); |
cwang365 | 1:0014879fa94f | 28 | HTTPResult r = http1.get(voiceurl.c_str(), &f); |
cwang365 | 1:0014879fa94f | 29 | if(r==HTTP_OK) { |
cwang365 | 1:0014879fa94f | 30 | printf("download Result OK\n"); |
cwang365 | 1:0014879fa94f | 31 | } else { |
cwang365 | 1:0014879fa94f | 32 | printf("download Error %d\n", r); |
cwang365 | 1:0014879fa94f | 33 | } |
cwang365 | 1:0014879fa94f | 34 | wait(1.5); |
cwang365 | 1:0014879fa94f | 35 | HTTPFile clear(f); |
cwang365 | 1:0014879fa94f | 36 | voiceurl.erase(); |
mpetersen3 | 0:9cb0b3d1b9e6 | 37 | |
cwang365 | 1:0014879fa94f | 38 | } |
mpetersen3 | 0:9cb0b3d1b9e6 | 39 | |
cwang365 | 1:0014879fa94f | 40 | int main () |
cwang365 | 1:0014879fa94f | 41 | { |
mpetersen3 | 0:9cb0b3d1b9e6 | 42 | /*============================================================ |
mpetersen3 | 0:9cb0b3d1b9e6 | 43 | * MP3 Initialising |
mpetersen3 | 0:9cb0b3d1b9e6 | 44 | *==========================================================*/ |
mpetersen3 | 0:9cb0b3d1b9e6 | 45 | #ifndef FS_ONLY |
mpetersen3 | 0:9cb0b3d1b9e6 | 46 | mp3._RST = 1; |
mpetersen3 | 0:9cb0b3d1b9e6 | 47 | mp3.cs_high(); //chip disabled |
mpetersen3 | 0:9cb0b3d1b9e6 | 48 | mp3.sci_initialise(); //initialise MBED |
mpetersen3 | 0:9cb0b3d1b9e6 | 49 | mp3.sci_write(0x00,(SM_SDINEW+SM_STREAM+SM_DIFF)); |
mpetersen3 | 0:9cb0b3d1b9e6 | 50 | mp3.sci_write(0x03, 0x9800); |
mpetersen3 | 0:9cb0b3d1b9e6 | 51 | mp3.sdi_initialise(); |
mpetersen3 | 0:9cb0b3d1b9e6 | 52 | #endif |
cwang365 | 1:0014879fa94f | 53 | |
cwang365 | 1:0014879fa94f | 54 | // make debug port Fast |
cwang365 | 1:0014879fa94f | 55 | Serial pc(USBTX, USBRX); |
cwang365 | 1:0014879fa94f | 56 | pc.baud(9600); |
cwang365 | 1:0014879fa94f | 57 | |
cwang365 | 1:0014879fa94f | 58 | lcd1.cls(); |
cwang365 | 1:0014879fa94f | 59 | lcd1.printf("net setup"); |
cwang365 | 1:0014879fa94f | 60 | EthernetErr ethErr = eth.setup(); |
cwang365 | 1:0014879fa94f | 61 | if (ethErr) { |
cwang365 | 1:0014879fa94f | 62 | lcd1.printf("\n\r net error"); |
cwang365 | 1:0014879fa94f | 63 | |
cwang365 | 1:0014879fa94f | 64 | } |
cwang365 | 1:0014879fa94f | 65 | lcd1.printf("\n\r net ok"); |
cwang365 | 1:0014879fa94f | 66 | wait(0.5); |
cwang365 | 1:0014879fa94f | 67 | lcd1.printf("streaming news"); |
cwang365 | 1:0014879fa94f | 68 | fetch(); |
cwang365 | 1:0014879fa94f | 69 | wait(1); |
cwang365 | 1:0014879fa94f | 70 | lcd1.cls(); |
cwang365 | 1:0014879fa94f | 71 | int a=1; |
mpetersen3 | 0:9cb0b3d1b9e6 | 72 | printf("%i\n",a); |
cwang365 | 1:0014879fa94f | 73 | int count = 0; |
cwang365 | 1:0014879fa94f | 74 | int oldcount=0; |
cwang365 | 1:0014879fa94f | 75 | int dirt = 0; |
mpetersen3 | 0:9cb0b3d1b9e6 | 76 | |
cwang365 | 1:0014879fa94f | 77 | FILE * pFile; |
cwang365 | 1:0014879fa94f | 78 | long lSize; |
cwang365 | 1:0014879fa94f | 79 | char * buffer; |
cwang365 | 1:0014879fa94f | 80 | size_t result; |
cwang365 | 1:0014879fa94f | 81 | |
cwang365 | 1:0014879fa94f | 82 | while (true) { |
cwang365 | 1:0014879fa94f | 83 | lcd1.printf(" news %d \n\n",a); |
cwang365 | 1:0014879fa94f | 84 | dirt = rpg1.dir(); //Get Dir |
cwang365 | 1:0014879fa94f | 85 | count = count + dirt; //Ad Dir to count |
cwang365 | 1:0014879fa94f | 86 | if (count>oldcount) { |
cwang365 | 1:0014879fa94f | 87 | oldcount=count; |
cwang365 | 1:0014879fa94f | 88 | a++; |
cwang365 | 1:0014879fa94f | 89 | lcd1.printf(" news %d \n\n",a); |
cwang365 | 1:0014879fa94f | 90 | |
cwang365 | 1:0014879fa94f | 91 | } else if(count<oldcount) { |
cwang365 | 1:0014879fa94f | 92 | oldcount=count; |
cwang365 | 1:0014879fa94f | 93 | a--; |
cwang365 | 1:0014879fa94f | 94 | lcd1.printf(" news %d \n\n",a); |
cwang365 | 1:0014879fa94f | 95 | } |
cwang365 | 1:0014879fa94f | 96 | |
cwang365 | 1:0014879fa94f | 97 | if (rpg1.pb()) { |
cwang365 | 1:0014879fa94f | 98 | |
cwang365 | 1:0014879fa94f | 99 | |
cwang365 | 1:0014879fa94f | 100 | lcd1.printf("You have chosen the news %d \n",a); |
cwang365 | 1:0014879fa94f | 101 | |
mpetersen3 | 0:9cb0b3d1b9e6 | 102 | |
cwang365 | 1:0014879fa94f | 103 | pFile = fopen ( ct[a], "rb" ); |
cwang365 | 1:0014879fa94f | 104 | if (pFile==NULL) { |
cwang365 | 1:0014879fa94f | 105 | printf ("File error"); |
cwang365 | 1:0014879fa94f | 106 | exit (1); |
cwang365 | 1:0014879fa94f | 107 | } |
cwang365 | 1:0014879fa94f | 108 | |
cwang365 | 1:0014879fa94f | 109 | // obtain file size: |
cwang365 | 1:0014879fa94f | 110 | fseek (pFile , 0 , SEEK_END); |
cwang365 | 1:0014879fa94f | 111 | lSize = ftell (pFile); |
cwang365 | 1:0014879fa94f | 112 | rewind (pFile); |
cwang365 | 1:0014879fa94f | 113 | |
cwang365 | 1:0014879fa94f | 114 | // allocate memory to contain the whole file: |
cwang365 | 1:0014879fa94f | 115 | buffer = (char*) malloc (sizeof(char)*lSize); |
cwang365 | 1:0014879fa94f | 116 | if (buffer == NULL) { |
cwang365 | 1:0014879fa94f | 117 | printf ("Memory error"); |
cwang365 | 1:0014879fa94f | 118 | exit (2); |
cwang365 | 1:0014879fa94f | 119 | } |
cwang365 | 1:0014879fa94f | 120 | |
cwang365 | 1:0014879fa94f | 121 | // copy the file into the buffer: |
cwang365 | 1:0014879fa94f | 122 | result = fread (buffer,1,lSize,pFile); |
cwang365 | 1:0014879fa94f | 123 | if (result != lSize) { |
cwang365 | 1:0014879fa94f | 124 | printf ("Reading error"); |
cwang365 | 1:0014879fa94f | 125 | exit (3); |
mpetersen3 | 0:9cb0b3d1b9e6 | 126 | } |
cwang365 | 1:0014879fa94f | 127 | string voiceurl=string(buffer); |
cwang365 | 1:0014879fa94f | 128 | |
cwang365 | 1:0014879fa94f | 129 | /* the whole file is now loaded in the memory buffer. */ |
cwang365 | 1:0014879fa94f | 130 | |
cwang365 | 1:0014879fa94f | 131 | // terminate |
cwang365 | 1:0014879fa94f | 132 | fclose (pFile); |
cwang365 | 1:0014879fa94f | 133 | free (buffer); |
cwang365 | 1:0014879fa94f | 134 | lcd1.printf("You have chosen the news %d \n",a); |
cwang365 | 1:0014879fa94f | 135 | printf("%s\n",voiceurl.c_str()); |
cwang365 | 1:0014879fa94f | 136 | download( voiceurl,a); |
cwang365 | 1:0014879fa94f | 137 | voiceurl.erase(); |
cwang365 | 1:0014879fa94f | 138 | wait(1); |
cwang365 | 1:0014879fa94f | 139 | lcd1.cls(); |
cwang365 | 1:0014879fa94f | 140 | mp3.play_song(a+10); |
cwang365 | 1:0014879fa94f | 141 | |
cwang365 | 1:0014879fa94f | 142 | wait(1); |
cwang365 | 1:0014879fa94f | 143 | |
mpetersen3 | 0:9cb0b3d1b9e6 | 144 | } |
cwang365 | 1:0014879fa94f | 145 | wait(0.2); |
cwang365 | 1:0014879fa94f | 146 | printf("pb: %i ", rpg1.pb()); //Print out Count |
cwang365 | 1:0014879fa94f | 147 | |
cwang365 | 1:0014879fa94f | 148 | printf("count:%d dirt:%d\n",count,dirt); |
mpetersen3 | 0:9cb0b3d1b9e6 | 149 | } |
cwang365 | 1:0014879fa94f | 150 | printf("Done.\r\n"); |
cwang365 | 1:0014879fa94f | 151 | } |
cwang365 | 1:0014879fa94f | 152 |