News_Reader

Dependencies:   FatFileSystem HTTPClient NetServices RPG SDFileSystem TextLCD mbed spxml

Fork of Arduino_MP3_Shield_MP3Player_UI by Matthew Petersen

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?

UserRevisionLine numberNew 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