/* 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(); }