Example #1
0
/* Main function starts here*/
int main(void) 
{ 
    //Functions to set up the neccessary registers for GPIO, UART and SPI peripherals and motors
    // mInit();
    InitPeripherals(); 

    mYellowON; mRedON; mGreenON; mWhiteON; mBlueON;
    DelayMilliseconds(10000);
    mYellowOFF;mRedOFF;mGreenOFF; mWhiteOFF; mBlueOFF;
  
    debug_setup();
    //Enter Module number to give it corresponding static IP
    //ie 192.168.10.(110+num)
    cc3000_initialize_ip(10); 
    cc3000_startup_check();
	//Initialization for motors
    // motor_dir_init();
    // TIMA_config(100, 20,10); // timer1 channel 1 PA8
    // TIMB_config(100, 20,10); // timer2 channel 3 PA9
    // TIMC_config(100, 20,10); // timer15 channel 1 PB14
    // TIMD_config(100, 20,10); // timer2 channel 2 PA1 // first 2 numbers
                           // in this function are not doing anything  
	  // Motormsg testmsg;
    mGreenOFF;
    MsgDof *testmsg2; 
    // testmsg.motor_0_vel  = 34;
    // testmsg.motor_1_vel  = 34;
    // testmsg.motor_0_direction  = 34;
    // testmsg.motor_1_direction  = 3489;	

    uint8_t testarray[3] = {1,0,7};
    testmsg2 = (MsgDof*)testarray;
  /* Uncomment the function to use the desired socket for communication
   * ONLY ONE of the following functions should be uncommented
   */
	udp_socket_communication(); //UDP socket communication
//  tcp_socket_server();  //TCP socket communication as a server
//  tcp_socket_client();	//TCP socket communication as a client

	//Transmit and Receive in an infinite loop
	while(1){
		//Transmit data
		sendto(desSocket, testmsg2, sizeof(*testmsg2), 0, (sockaddr*) &des_addr, sizeof(des_addr));
		//mWaitms(2);	//Delay is needed between send and receive functions
		//Receive data
		revLen = recvfrom(revSocket, rev_buf, 10, 0, (sockaddr*) &source_addr, &revPacketLen);
		if(revLen>0){
			//debug_write_u32(source_addr.sin_addr.s_addr, 16);


			debug_write_bytes(rev_buf, revLen); 
      if(rev_buf[0] = 5)
      {
        mBlueON; 
        DelayMilliseconds(100);
      }


			//motor_test(rev_buf[0]);
			// mPurpleTOGGLE;
      mRedON;
		}
		
		//Available function seems to cause lots of overhead, avoid using it if speed is desired
		/*
		if(available(revSocket)==1){
			revLen = recvfrom(revSocket, rev_buf, 10, 0, (sockaddr*) &source_addr, &revPacketLen);
			//debug_write_bytes(rev_buf, revLen);
			motor_test(rev_buf[0]);
			mRedTOGGLE;				
		}
		*/
		
		//Heartbeat
		mGreenTOGGLE;
		//mWaitms(2); //Delay is needed between send and receive functions
	}
}
PROCESS_THREAD(debug_process, ev, data) {
  char line[MAX_LINE_LENGTH];
  uint16_t read;
  uint8_t b;
  uint32_t flashAddress = 0;
  uint32_t flashCount = 0;
  uint32_t t = 0;

  PROCESS_BEGIN();

  while (1) {
    PROCESS_YIELD();

    while (dma_ring_buffer_readline(&g_debugUsartDmaInputRingBuffer, line, MAX_LINE_LENGTH)) {
      if (strcmp(line, "!CONNECT\n") == 0) {
        debug_write_line("+OK");
        debug_write_line("!clear");
        debug_write_line("!set name,dc-electronic-load");
        debug_write_line("!set description,'DC Electonic Load'");
      }
      
      else if (strcmp(line, "!RESET\n") == 0) {
        debug_write_line("+OK");
        NVIC_SystemReset();
      }

#ifdef ADC_ENABLE
      else if (strcmp(line, "!ADCLAST\n") == 0) {
        debug_write("+OK ");
        debug_write_u16(lastAdcValue[0], 10);
        debug_write(",");
        debug_write_u16(lastAdcValue[1], 10);
        debug_write(",");
        debug_write_u16(lastAdcValue[2], 10);
        debug_write(",");
        debug_write_u16(lastAdcValue[3], 10);
        debug_write(",");
        debug_write_u16(setCurrentMilliamps, 10);
        debug_write_line("");
      } else if (strcmp(line, "!ADCRAW\n") == 0) {
        debug_write("+OK ");
        debug_write_u16(adc_sample(ADC_CH0_SINGLE), 10);
        debug_write(",");
        debug_write_u16(adc_sample(ADC_CH1_SINGLE), 10);
        debug_write(",");
        debug_write_u16(adc_sample(ADC_CH2_SINGLE), 10);
        debug_write(",");
        debug_write_u16(adc_sample(ADC_CH3_SINGLE), 10);
        debug_write_line("");
      }
#endif

#ifdef FAN_ENABLE
      else if (strncmp(line, "!FANSET ", 8) == 0) {
        uint8_t fanSetOverride = atoi(line + 8);
        fan_set(fanSetOverride);
        debug_write_line("+OK");
      } else if (strcmp(line, "!FANGET\n") == 0) {
        debug_write("+OK ");
        debug_write_u8(fan_get(), 10);
        debug_write_line("");
      }
#endif

#ifdef DISP6800_ENABLE
      else if (strcmp(line, "!DISPON\n") == 0) {
        disp6800_set_display_onoff(DISP6800_DISPLAY_ON);
        debug_write_line("+OK");
      } else if (strcmp(line, "!DISPOFF\n") == 0) {
        disp6800_set_display_onoff(DISP6800_DISPLAY_OFF);
        debug_write_line("+OK");
      }
#endif

#ifdef FLASH_ENABLE
      else if (strcmp(line, "!FLASHCLEAR\n") == 0) {
        flashsst25_erase_chip();
        debug_write_line("+OK");
      } else if (strncmp(line, "!FLASHWRITE ", 12) == 0) {
        flashAddress = atoi(line + 12);
        flashCount = FLASH_BLOCK_SIZE;

        debug_write_line("+READY");
        t = time_ms();
        while (1) {
          if (flashCount <= 0) {
            debug_write("+OK ");
            debug_write_u32(flashAddress, 10);
            debug_write_line("");
            break;
          }
          if ((time_ms() - t) > 5000) {
            debug_write_line("-FAIL");
            break;
          }
          if ((read = dma_ring_buffer_read(&g_debugUsartDmaInputRingBuffer, (uint8_t*)line, MIN(flashCount, sizeof(line)))) <= 0) {
            continue;
          }
          flashsst25_write(flashAddress, (uint8_t*)line, read);
          flashAddress += read;
          flashCount -= read;
          t = time_ms();
        }
      } else if (strncmp(line, "!FLASHREAD ", 11) == 0) {
        flashAddress = atoi(line + 11);
        flashCount = FLASH_BLOCK_SIZE;
        debug_write_line("+OK");
        flashsst25_read_begin(flashAddress);
        while (flashCount > 0) {
          b = flashsst25_read();
          debug_write_bytes(&b, 1);
          flashCount--;
        }
        flashsst25_read_end();
      }
#endif

      else {
        debug_write("?Unknown command: ");
        debug_write_line(line);
      }
    }
  }

  PROCESS_END();
}