Пример #1
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int wifi_main(void)
{	unsigned char i;
    SysTick_Configuration();
//    DBGU_Init();
    SN8200_API_Init(921600);
	
    strcpy(domain, "www.murata-ws.com");
    strcpy(uri, "/index.html");
    printf("\n\rHello, Embedded World!\n\r");
    printf("\n\r");
    WifiOn(seqNo++);
    printf("\n\r");
    
    ShowMenu();
	
	WifiDisconn(seqNo++);
        WifiJoin(seqNo++);
        SnicInit(seqNo++);
        SnicIPConfig(seqNo++);
    /* Infinite loop */
    while (1) {
        if(DBGU_InputReady) {
            ProcessUserInput();
        }
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(quit_flag)
            break;
    }
    printf("\n\rGoodbye, Embedded World!\n\r");
		
		
}void DBGU_Init(void)
Пример #2
0
}int udpCreateSocket(int8u bindOption, int32u ip, int16u port, int8u seq)
{    int8u buf[9];
    buf[0] = SNIC_UDP_CREATE_SOCKET_REQ;
    buf[1] = seq;
    buf[2] = bindOption;
    if (bindOption) {
        int32u myip = swap32(ip);
        int16u myport = swap16(port);
        memcpy(buf+3, (int8u*)&myip, 4);
        memcpy(buf+7, (int8u*)&myport, 2);
        serial_transmit(CMD_ID_SNIC, buf, 9, ACK_NOT_REQUIRED);
    } else
        serial_transmit(CMD_ID_SNIC, buf, 3, ACK_NOT_REQUIRED);
    printf("-udpCreateSocket\n\r");
    while (1) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsCreateSocketResponsed) {
            IsCreateSocketResponsed = false;
            break;
        }
        mdelay(1);
    }
    return 0;
}int udpSendFromSock(int32u ip, int16u iPort, int8u shortsock, int8u conMode, int8u *sendbuf, int16u len, int8u seq)
Пример #3
0
}int udpSendFromSock(int32u ip, int16u iPort, int8u shortsock, int8u conMode, int8u *sendbuf, int16u len, int8u seq)
{    int8u buf[2048+12];
    int16u mybufsize;
    if (len == 0 || len > MAX_BUFFER_SIZE) {
        len = MAX_BUFFER_SIZE;
    }
    buf[0] = SNIC_UDP_SEND_FROM_SOCKET_REQ;
    buf[1] = seq;
    memcpy(buf+2, (int8u*)&ip, 4);
    memcpy(buf+6, (int8u*)&iPort, 2);
    buf[8] = shortsock;
    buf[9] = conMode;
    mybufsize = swap16(len);
    memcpy(buf+10, (int8u*)&mybufsize, 2);
    memcpy(buf+12, sendbuf, len);
    serial_transmit(CMD_ID_SNIC, buf, 12+len, ACK_NOT_REQUIRED);
    printf("-udpSendFromSock\n\r");
    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(sendUDPDone) {
            sendUDPDone = 0;
            break;
        }
        mdelay(1);
    }
    return 0;
}int udpStartRecv(int32u sock, int16u bufsize, int8u seq)
Пример #4
0
}int tcpConnectToServer(int8u shortSock, int32u ip, int16u port, int16u bufsize, int8u timeout, int8u seq)
{    int8u buf[12];
    if (bufsize == 0 || bufsize > MAX_BUFFER_SIZE) {
        bufsize = MAX_BUFFER_SIZE;
    }
    buf[0] = SNIC_TCP_CONNECT_TO_SERVER_REQ;
    buf[1] = seq;
    buf[2] = shortSock;
    memcpy(buf+3, (int8u*)&ip, 4);
    memcpy(buf+7, (int8u*)&port, 2);
    bufsize = swap16(bufsize);
    memcpy(buf+9, (int8u*)&bufsize, 2);
    buf[11] = timeout;
    serial_transmit(CMD_ID_SNIC, buf, 12, ACK_NOT_REQUIRED);
    printf("-tcpConnectToServer\n\r");
    mdelay(1000);        //Wait module return value
    while (1) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsSNICTCPConnectToServerResponsed) {
            IsSNICTCPConnectToServerResponsed = false;
            break;
        }
        mdelay(1);
    }
    return 0;
}int tcpCreateConnection(int8u shortSock, int16u size, int8u maxClient, int8u seq)
Пример #5
0
}int sendFromSock(int8u shortSocket, int8u * sendBuf, int16u len, int8u timeout, int8u seq)
{    int8u buf[MAX_BUFFER_SIZE+6];
    int16u mybufsize;
    if (len == 0 || len > MAX_BUFFER_SIZE) {
        len = MAX_BUFFER_SIZE;
    }
    buf[0] = SNIC_SEND_FROM_SOCKET_REQ;
    buf[1] = seq;
    buf[2] = shortSocket;
    buf[3] = 0;
    mybufsize = swap16(len);
    memcpy(buf+4, (int8u*)&mybufsize, 2);
    memcpy(buf+6, sendBuf, len);
    serial_transmit(CMD_ID_SNIC, buf, 6+len, ACK_NOT_REQUIRED);
    printf("-sendFromSock\n\r");
    while (1) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsSNICSendFromSocketResponsed) {
            IsSNICSendFromSocketResponsed = false;
            break;
        }
        mdelay(1);
    }
    return 0;
}int udpCreateSocket(int8u bindOption, int32u ip, int16u port, int8u seq)
Пример #6
0
}int tcpCreateSocket(int8u bindOption, int32u localIp, int16u port, int8u seq, int8u ssl)
{    int8u buf[9];
    buf[0] = ssl;
    buf[1] = seq;
    buf[2] = bindOption;
    if (bindOption) {
        memcpy(buf+3, (uint8_t*)&localIp, 4);
        memcpy(buf+7, (uint8_t*)&port, 2);
        serial_transmit(CMD_ID_SNIC, buf, 9, ACK_NOT_REQUIRED);
    } else
        serial_transmit(CMD_ID_SNIC, buf, 3, ACK_NOT_REQUIRED);
    printf("-tcpCreateSocket\n\r");
    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsCreateSocketResponsed) {
            IsCreateSocketResponsed = false;
            break;
        }
        mdelay(1);
    }
    return 0;
}int closeSocket(int8u shortSocket, int8u seq)
Пример #7
0
void	WiFi(void) {

static 
void	(*f)(void)=NULL;	
static 
int		fo=true;

			if(f==NULL) {
				DbgPrint(NULL);
				Dbg=_buffer_init(128);
				SN8200_API_Init(921600);
				strcpy(domain, "www.murata-ws.com");
				strcpy(uri, "/index.html");	
				if(!__com0 || !Dbg)
					NVIC_SystemReset();
				else {
					f=App_Loop;
					App_Loop=WiFi;
					SnicCleanup(seqNo++);
					WifiOff(seqNo++);
					Wait(200,App_Loop);
					WifiOn(seqNo++);
					Wait(200,App_Loop);
	        SnicInit(seqNo++);
					Wait(200,App_Loop);
					GetStatus(seqNo++);
					Wait(200,App_Loop);
					_buffer_push(Dbg,"0\r",2);	
					SnicGetDhcp(seqNo++);
					_buffer_push(Dbg,"6000\r",5);
					while (setTCPinfo() == CMD_ERROR)
						Wait(200,App_Loop); 
					mysock = -1;
					tcpCreateSocket(1, srcIP, (unsigned short)srcPort, seqNo++, SNIC_TCP_CREATE_SOCKET_REQ);
					if (mysock != -1) {
						tcpCreateConnection(mysock, TEST_BUFFERSIZE, 0x5, seqNo++);
					}
				}
			} else {
				__sendFromSock();
				if(fo==true) {
					fo=false;
					fo=ProcessUserInput();
				}
				if(SN8200_API_HasInput())
					ProcessSN8200Input();	
				f();
			}
}
Пример #8
0
}void GetStatus(int8u seq)
{    int8u buf[4];
    buf[0] = WIFI_GET_STATUS_REQ;
    buf[1] = seq;
    buf[2] = 0;
    serial_transmit(CMD_ID_WIFI, buf, 3, ACK_NOT_REQUIRED);
    printf("-GetStatus\n\r");
    timeout = 10000;
    while (timeout--) {
        if(1) {
            ProcessSN8200Input();
        }
        if(IsWIFIGetStatusResponsed) {
            IsWIFIGetStatusResponsed = false;
            break;
        }
        mdelay(1);
    }
}void WifiOn(int8u seq)
Пример #9
0
}void SnicIPConfig(int8u seq)
{    int8u buf[16];
    buf[0] = SNIC_IP_CONFIG_REQ;
    buf[1] = seq;
    buf[2] = 0; //STA
    buf[3] = 1; //DHCP
    serial_transmit(CMD_ID_SNIC, buf, 4, ACK_NOT_REQUIRED);
    printf("-SnicIPConfig\n\r");
    timeout = 10000;
    while (timeout--) {
        if(1) {
            ProcessSN8200Input();
        }
        if(IsSNICIPConfigResponsed) {
            IsSNICIPConfigResponsed = false;
            break;
        }
        mdelay(1);
    }
}void SnicGetDhcp(int8u seq)
Пример #10
0
//Get the WiFi status from SN8200
void GetStatus(int8u seq)
{
    int8u payload[4];
    payload[0] = WIFI_GET_STATUS_REQ;
    payload[1] = seq;
    payload[2] = 1; // 0 STA ; 1 AP
    serial_transmit(CMD_ID_WIFI, payload, 3, ACK_NOT_REQUIRED);

    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsWIFIGetStatusResponsed) {
            IsWIFIGetStatusResponsed = false;
            break;
        }
        mdelay(1);
    }
}
Пример #11
0
}void ApOnOff(int8u seq)
{    int8u buf[4];
    APOnOff ^= 1;
    buf[0] = WIFI_AP_CTRL_REQ;
    buf[1] = seq;
    buf[2] = APOnOff;
    buf[3] = 0; //persistency hardcode set as 0 means NOT save to NVM
    serial_transmit(CMD_ID_WIFI, buf, 4, ACK_NOT_REQUIRED);
    printf("-AP status\n\r");
    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsWIFIApCtrlResponsed) {
            IsWIFIApCtrlResponsed = false;
            break;
        }
        mdelay(1);
    }
}void WifiScan(int8u seq)
Пример #12
0
//Turn on or off the soft AP
void ApOnOff(int8u OnOff, int8u seq)
{
    int8u payload[4];
    APOnOff = OnOff;
    payload[0] = WIFI_AP_CTRL_REQ;
    payload[1] = seq;
    payload[2] = APOnOff;
    payload[3] = 0; //persistency hardcode set as 0 means NOT save to NVM
    serial_transmit(CMD_ID_WIFI, payload, 4, ACK_NOT_REQUIRED);

    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsWIFIApCtrlResponsed) {
            IsWIFIApCtrlResponsed = false;
            break;
        }
        mdelay(1);
    }
}
Пример #13
0
}void SnicGetDhcp(int8u seq)
{    int8u buf[3];
    char tempstr[2] = {0};
    buf[0] = SNIC_GET_DHCP_INFO_REQ;
    buf[1] = seq;
    printf("\n\rInterface Type? (0: STA  1: AP) \n\r");
    scanf("%s", tempstr);
    printf("\n\r");
    buf[2] = atoi(tempstr);
    //buf[2] = 0; // STA  1; // AP
    serial_transmit(CMD_ID_SNIC, buf, 3, ACK_NOT_REQUIRED);
    printf("-SnicGetDhcp\n\r");
    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsSNICGetDHCPInfoResponsed) {
            IsSNICGetDHCPInfoResponsed = false;
            break;
        }
        mdelay(1);
    }
}int tcpCreateSocket(int8u bindOption, int32u localIp, int16u port, int8u seq, int8u ssl)
Пример #14
0
}void WifiJoin(int8u seq)
{
	int i;
	uint8_t ch;
    int8u buf[128];
    char tempstr[2] = {0};
    int8u *p = buf;
    *p++ = WIFI_JOIN_REQ;
    *p++ = seq;
    strcpy(SSID,"Kwak0042");
		/*for(i=0; i<strlen(SSID); i++)
		{
			 ch = SSID[i];
			 DBGU_RxBuffer[DBGU_RxBufferHead] = ch;
			 USART_SendData(USART2, ch);
			 DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;      
		}		
		DBGU_RxBuffer[DBGU_RxBufferHead] = ch;
		USART_SendData(USART2, 0x0D);
		DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;
		DBGU_InputReady = 1;
		escape = 1;*/
		//Test_fgetc();
printf("qweqwe");
    printf("\n\r");
    while(!strlen(SSID)) {
        printf("SSID can't be empty. Enter SSID:\n\r");
        scanf("%s", SSID);
        printf("\n\r");
    }
		printf("asdasdasdsa");
		delay_ms(10);
    memcpy(p, SSID, strlen(SSID));
    p += strlen(SSID);
    *p++ = 0x00;
		
		delay_ms(10);
    strcpy(tempstr,"6");
			 /*DBGU_RxBuffer[DBGU_RxBufferHead] = tempstr[0];
			 USART_SendData(USART2, tempstr[0]);
			 DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;      
		DBGU_RxBuffer[DBGU_RxBufferHead] = tempstr[0];
		USART_SendData(USART2, 0x0D);
		DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;
		DBGU_InputReady = 1;
		escape = 1;*/
		//Test_fgetc();
		delay_ms(10);
    printf("\n\r");
    secMode = atoi(tempstr);
    if (secMode) {
        strcpy(secKey,"aaaaaaaa");
			/*for(i=0; i<strlen(secKey); i++)
		{
			 ch = secKey[i];
			 ch = SSID[i];
			 DBGU_RxBuffer[DBGU_RxBufferHead] = ch;
			 USART_SendData(USART2, ch);
			 DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;      
		}		
		DBGU_RxBuffer[DBGU_RxBufferHead] = ch;
		USART_SendData(USART2, 0x0D);
		DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;
		DBGU_InputReady = 1;
		escape = 1;*/
		//Test_fgetc();
			delay_ms(10);
        printf("\n\r");
        Keylen = (unsigned char)strlen(secKey);
        if (Keylen <= 0) {
            printf("Invalid Key\n\r");
            return;
        }
    }
    *p++ = secMode;
    *p++ = Keylen;
    if (Keylen) {
        memcpy(p, secKey, Keylen);
        p += Keylen;
    }
		
    serial_transmit(CMD_ID_WIFI, buf, (int)(p - buf), ACK_NOT_REQUIRED);
    printf("-WifiJoin\n\r");
    timeout = 10000;
    while (timeout--) {
        if(SN8200_API_HasInput()) {
            ProcessSN8200Input();
        }
        if(IsWIFIJoinResponsed) {
            IsWIFIJoinResponsed = false;
						printf("ttttttttttttt");
            break;
        }
        delay_ms(10);
    }
    joinok = 0;
}void WifiDisconn(int8u seq)
Пример #15
0
int main(void)
{

  /* USER CODE BEGIN 1 */
  trace_printf("Hello\n");
  uint8_t ch;
  uint32_t DBGU_RxBufferTail = 0;
  uint32_t DBGU_RxBufferHead = 0;
  uint8_t DBGU_RxBuffer[DBGU_RX_BUFFER_SIZE];
  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();

  /* USER CODE BEGIN 2 */
  BSP_UART_Init(115200);
  SN8200_HAL_Init(921600);
  uprintf("\n\rHello!\n\r");
  uprintf("\n\r");

  WifiOn(seqNo++);
  uprintf("\n\r");

  ShowMenu();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */
  /* USER CODE BEGIN 3 */
    if(HAL_UART_Receive(&huart6,&ch,1,100) == HAL_OK)
    {
      switch (ch)
      {
       case 0x7F:
         if(DBGU_RxBufferHead != DBGU_RxBufferTail)
         {
           DBGU_RxBufferHead = (DBGU_RxBufferHead - 1) % DBGU_RX_BUFFER_SIZE;
           HAL_UART_Transmit_IT(&huart6,0x7F,1);
         }
         break;

       case 0x0D:
         DBGU_RxBuffer[DBGU_RxBufferHead] = ch;
         DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;
         DBGU_InputReady = 1;
         break;

       case In_BACKSPACE:
         HAL_UART_Transmit_IT(&huart6,&ch,1);
         break;

       default:
         DBGU_RxBuffer[DBGU_RxBufferHead] = ch;
         HAL_UART_Transmit_IT(&huart6,&ch,1);
         DBGU_RxBufferHead = (DBGU_RxBufferHead + 1) % DBGU_RX_BUFFER_SIZE;
         key = ch;
         break;
      }
    }
    if(DBGU_InputReady)
    {
      ProcessUserInput();
    }
    if(SN8200_API_HasInput())
    {
      ProcessSN8200Input();
    }
    if(quit_flag)
    {
      break;
    }
  }
  uprintf("Goodbye\n\r");
  /* USER CODE END 3 */
}