added basic support for WifiGecko

This commit is contained in:
Christopher Roy Bratusek 2012-08-29 22:57:53 +02:00
parent 782f594296
commit 3670bbb712
5 changed files with 173 additions and 0 deletions

Binary file not shown.

View File

@ -11,6 +11,7 @@
#include "Network/network.h"
#include "Network/update.h"
#include "Network/tcp.h"
#include "Network/wifi_gecko.h"
/*** Extern variables ***/
extern GuiWindow * mainWindow;
@ -617,6 +618,7 @@ int MenuMain()
bool next_page = false;
bool previous_page = false;
bool first = false;
while(menu == MENU_NONE)
{
@ -659,6 +661,18 @@ int MenuMain()
ResumeTcpThread();
if(boot_buffer)
menu = MENU_EXIT;
if(!first)
{
WifiGecko_Connect();
wifi_printf("The HomebrewFilter rev%i\n", SvnRev());
usleep(500);
wifi_printf("= == == == == == == == =\n");
usleep(500);
wifi_printf(" Wifi Gecko connected.");
first = true;
}
}
else
network_Btn.SetImage(&network_BtnImg);

View File

@ -0,0 +1,113 @@
/****************************************************************************
* Copyright (C) 2010
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*
* for WiiXplorer 2010
***************************************************************************/
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <network.h>
#define DESTINATION_IP "10.0.0.6"
#define DESTINATION_PORT 4405
static int connection = -1;
void WifiGecko_Close()
{
if(connection >= 0)
net_close(connection);
connection = -1;
}
int WifiGecko_Connect()
{
if(connection >= 0)
return connection;
connection = net_socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
if (connection < 0)
return connection;
struct sockaddr_in connect_addr;
memset(&connect_addr, 0, sizeof(connect_addr));
connect_addr.sin_family = AF_INET;
connect_addr.sin_port = htons(DESTINATION_PORT);
inet_aton(DESTINATION_IP, &connect_addr.sin_addr);
if(net_connect(connection, (struct sockaddr*)&connect_addr, sizeof(connect_addr)) < 0)
{
WifiGecko_Close();
return -1;
}
return connection;
}
int WifiGecko_Send(const char * data, int datasize)
{
if(WifiGecko_Connect() < 0)
return connection;
int ret = 0, done = 0, blocksize = 1024;
while (done < datasize)
{
if(blocksize > datasize-done)
blocksize = datasize-done;
ret = net_send(connection, data+done, blocksize, 0);
if (ret < 0)
{
WifiGecko_Close();
return ret;
}
else if(ret == 0)
{
break;
}
done += ret;
usleep (1000);
}
return ret;
}
void wifi_printf(const char * format, ...)
{
char * tmp = NULL;
va_list va;
va_start(va, format);
if((vasprintf(&tmp, format, va) >= 0) && tmp)
{
WifiGecko_Send(tmp, strlen(tmp));
}
va_end(va);
if(tmp)
free(tmp);
}

View File

@ -0,0 +1,42 @@
/****************************************************************************
* Copyright (C) 2010
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*
* for WiiXplorer 2010
***************************************************************************/
#ifndef WIFI_GECKO_H_
#define WIFI_GECKO_H_
#ifdef __cplusplus
extern "C" {
#endif
int WifiGecko_Connect();
void WifiGecko_Close();
int WifiGecko_Send(const char * data, int datasize);
void wifi_printf(const char * format, ...);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,5 +1,9 @@
//rev41:
- fixed auto-connecting Internet via WiFi
- basic support for WifiGecko
* only connection message is shown currently
* no option yet to change IP and Port
* also works via LAN
//rev40:
- new icon (JoostinOnline)