Amer Ratkovic Amela Spica

Dependencies:   mbed nRF24L01P

Committer:
tim010
Date:
Mon Jun 09 07:35:33 2014 +0000
Revision:
0:f2f4f4cd4bd9
PROJEKAT_13_Grupa5_Tim010_Bezicni_Chat

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tim010 0:f2f4f4cd4bd9 1 #include "mbed.h"
tim010 0:f2f4f4cd4bd9 2 #include "nRF24L01P.h"
tim010 0:f2f4f4cd4bd9 3 #include "string"
tim010 0:f2f4f4cd4bd9 4 #define TRANSFER_SIZE 2
tim010 0:f2f4f4cd4bd9 5
tim010 0:f2f4f4cd4bd9 6 Serial pc(USBTX, USBRX); // tx, rx
tim010 0:f2f4f4cd4bd9 7
tim010 0:f2f4f4cd4bd9 8 nRF24L01P my_nrf24l01p(PTD2, PTD3, PTD1, PTD0, PTD5, PTA13); // mosi, miso, sck, csn, ce, irq
tim010 0:f2f4f4cd4bd9 9
tim010 0:f2f4f4cd4bd9 10 DigitalOut myled1(LED1);
tim010 0:f2f4f4cd4bd9 11 DigitalOut myled2(LED2);
tim010 0:f2f4f4cd4bd9 12
tim010 0:f2f4f4cd4bd9 13
tim010 0:f2f4f4cd4bd9 14 char nick [20];
tim010 0:f2f4f4cd4bd9 15 int brojac=0;
tim010 0:f2f4f4cd4bd9 16 int i=0;
tim010 0:f2f4f4cd4bd9 17 int main()
tim010 0:f2f4f4cd4bd9 18 {
tim010 0:f2f4f4cd4bd9 19
tim010 0:f2f4f4cd4bd9 20 int vel=0,j=0;
tim010 0:f2f4f4cd4bd9 21 int txDataCnt = 0;
tim010 0:f2f4f4cd4bd9 22 int rxDataCnt = 0;
tim010 0:f2f4f4cd4bd9 23 char txData[TRANSFER_SIZE], rxData[20];
tim010 0:f2f4f4cd4bd9 24 string str="";
tim010 0:f2f4f4cd4bd9 25
tim010 0:f2f4f4cd4bd9 26 pc.printf( "Dobrodosli na Wi-Fi chat\n \n" );
tim010 0:f2f4f4cd4bd9 27 pc.printf( "Unesite vas nick: " );
tim010 0:f2f4f4cd4bd9 28 pc.scanf("%s",&nick);
tim010 0:f2f4f4cd4bd9 29 pc.printf("Vas nick je ...'%s'...\n", nick);
tim010 0:f2f4f4cd4bd9 30 for (j=0; j<20; j++) {
tim010 0:f2f4f4cd4bd9 31 if(nick[j]=='\0') {
tim010 0:f2f4f4cd4bd9 32
tim010 0:f2f4f4cd4bd9 33 break;
tim010 0:f2f4f4cd4bd9 34 }
tim010 0:f2f4f4cd4bd9 35 brojac++;
tim010 0:f2f4f4cd4bd9 36 }
tim010 0:f2f4f4cd4bd9 37 nick[brojac++]=':';
tim010 0:f2f4f4cd4bd9 38 nick[brojac++]=' ';
tim010 0:f2f4f4cd4bd9 39
tim010 0:f2f4f4cd4bd9 40 strcat(nick,": ");
tim010 0:f2f4f4cd4bd9 41 pc.printf("Cekanje na drugog korisnik ...\n");
tim010 0:f2f4f4cd4bd9 42
tim010 0:f2f4f4cd4bd9 43 my_nrf24l01p.powerUp();
tim010 0:f2f4f4cd4bd9 44 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
tim010 0:f2f4f4cd4bd9 45 my_nrf24l01p.setReceiveMode();
tim010 0:f2f4f4cd4bd9 46 my_nrf24l01p.enable();
tim010 0:f2f4f4cd4bd9 47
tim010 0:f2f4f4cd4bd9 48 pc.printf("\n");
tim010 0:f2f4f4cd4bd9 49 pc.printf("%s",nick);
tim010 0:f2f4f4cd4bd9 50
tim010 0:f2f4f4cd4bd9 51
tim010 0:f2f4f4cd4bd9 52 while (1) {
tim010 0:f2f4f4cd4bd9 53
tim010 0:f2f4f4cd4bd9 54 // If we've received anything over the host serial link...
tim010 0:f2f4f4cd4bd9 55 if ( pc.readable() ) {
tim010 0:f2f4f4cd4bd9 56
tim010 0:f2f4f4cd4bd9 57 if(i==0) {
tim010 0:f2f4f4cd4bd9 58 for (j=0; j<brojac; j++) {
tim010 0:f2f4f4cd4bd9 59 txData[txDataCnt++] = nick[j];
tim010 0:f2f4f4cd4bd9 60
tim010 0:f2f4f4cd4bd9 61 // If the transmit buffer is full
tim010 0:f2f4f4cd4bd9 62 if ( txDataCnt >= sizeof( txData ) ) {
tim010 0:f2f4f4cd4bd9 63
tim010 0:f2f4f4cd4bd9 64 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
tim010 0:f2f4f4cd4bd9 65
tim010 0:f2f4f4cd4bd9 66 txDataCnt = 0;
tim010 0:f2f4f4cd4bd9 67 }
tim010 0:f2f4f4cd4bd9 68 }
tim010 0:f2f4f4cd4bd9 69
tim010 0:f2f4f4cd4bd9 70
tim010 0:f2f4f4cd4bd9 71 }
tim010 0:f2f4f4cd4bd9 72
tim010 0:f2f4f4cd4bd9 73
tim010 0:f2f4f4cd4bd9 74 txData[txDataCnt++] = pc.getc();
tim010 0:f2f4f4cd4bd9 75
tim010 0:f2f4f4cd4bd9 76 // If the transmit buffer is full
tim010 0:f2f4f4cd4bd9 77 if ( txDataCnt >= sizeof( txData ) ) {
tim010 0:f2f4f4cd4bd9 78
tim010 0:f2f4f4cd4bd9 79 // Send the transmitbuffer via the nRF24L01+
tim010 0:f2f4f4cd4bd9 80 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
tim010 0:f2f4f4cd4bd9 81
tim010 0:f2f4f4cd4bd9 82 txDataCnt = 0;
tim010 0:f2f4f4cd4bd9 83 }
tim010 0:f2f4f4cd4bd9 84 i=1;
tim010 0:f2f4f4cd4bd9 85 // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
tim010 0:f2f4f4cd4bd9 86 myled1 = !myled1;
tim010 0:f2f4f4cd4bd9 87 }
tim010 0:f2f4f4cd4bd9 88
tim010 0:f2f4f4cd4bd9 89 // If we've received anything in the nRF24L01+...
tim010 0:f2f4f4cd4bd9 90 if ( my_nrf24l01p.readable() ) {
tim010 0:f2f4f4cd4bd9 91 i=0;
tim010 0:f2f4f4cd4bd9 92 // ...read the data into the receive buffer
tim010 0:f2f4f4cd4bd9 93 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
tim010 0:f2f4f4cd4bd9 94
tim010 0:f2f4f4cd4bd9 95 str += rxData;
tim010 0:f2f4f4cd4bd9 96 vel += rxDataCnt;
tim010 0:f2f4f4cd4bd9 97 if(str[vel-1] == '.') {
tim010 0:f2f4f4cd4bd9 98
tim010 0:f2f4f4cd4bd9 99
tim010 0:f2f4f4cd4bd9 100 vel--;
tim010 0:f2f4f4cd4bd9 101 pc.printf("\n");
tim010 0:f2f4f4cd4bd9 102
tim010 0:f2f4f4cd4bd9 103 // Display the receive buffer contents via the host serial link
tim010 0:f2f4f4cd4bd9 104 for ( int i = 0; vel > 0; vel--, i++ ) {
tim010 0:f2f4f4cd4bd9 105
tim010 0:f2f4f4cd4bd9 106 pc.putc( str[i] );
tim010 0:f2f4f4cd4bd9 107 }
tim010 0:f2f4f4cd4bd9 108 pc.printf("\n");
tim010 0:f2f4f4cd4bd9 109 vel = 0;
tim010 0:f2f4f4cd4bd9 110 str ="";
tim010 0:f2f4f4cd4bd9 111
tim010 0:f2f4f4cd4bd9 112 rxDataCnt = 0;
tim010 0:f2f4f4cd4bd9 113 }
tim010 0:f2f4f4cd4bd9 114
tim010 0:f2f4f4cd4bd9 115 // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
tim010 0:f2f4f4cd4bd9 116 myled2 = !myled2;
tim010 0:f2f4f4cd4bd9 117 }
tim010 0:f2f4f4cd4bd9 118 }
tim010 0:f2f4f4cd4bd9 119 }