My twitter
- welcome home @danielpetisme :) #dev #android #java about 22 hours ago from web
- RT @mazenovi: FramaTuning à base de LiberKey http://m4z3.me/m #portableapps 08:06:56 septembre 08, 2010 from TweetDeck
- @MattGNU @mazenovi utilise windows et du coup je sais pas si camstudio tourne sous linux... et si c'est le mieux... 04:15:37 septembre 07, 2010 from TweetDeckin reply to MattGNU
- Screencast sous linux, des idées ? 04:13:36 septembre 07, 2010 from TweetDeck
- RT @mbontemps: Bon, les experts "symphony", arrêtez de postuler. // J'aime. 01:10:13 septembre 07, 2010 from TweetDeck
- @nymac arf.. disons que ce que j'ai sous les yeux est un peu moche... :D 09:05:13 septembre 07, 2010 from TweetDeckin reply to nymac
- RT @nhoizey: @edasfr #webperf // +1 09:04:28 septembre 07, 2010 from TweetDeck
- Pour le bien de l'humanité (et pour moi-même), un flasheur ne devrait jamais écrire du PHP, jamais... 08:49:37 septembre 07, 2010 from TweetDeck
- @chessman2212 @ybb_fr @mazenovi @agou quelle heure alors ? 02:37:54 septembre 06, 2010 from TweetDeckin reply to chessman2212
- Dedibox v3, je te hais ! 01:55:24 septembre 06, 2010 from TweetDeck
RSS Feed
Liens
Réminiscences d’un développement sur la console PSP
Auparavant, j’avais tenté la création de sites sous Voila.fr (RIP) ou encore Wanadoo.fr, j’avais une bonne expérience de Médiator, un logiciel qui permettait de créer différents contenus multimédia que l’on m’avait enseigné au collège. Je ne sais pas ce que devient ce logiciel mais à l’époque c’était la révolution.
Puis quelques temps après j’ai touché à PHP dans sa version 4. Création de sites (dont j’aurais aujourd’hui honte), développement de petits scripts et autres, j’ai vite appri à utiliser une base de données et tout ce qui gravite autour de PHP4.
Lors de cette première année de DUT on m’a enseigné le C et le C++ (dont je ne me rappelle guère). Dans le même temps, j’ai reçu une PSP en cadeau. C’est certainement là que mon avenir a basculé, une sorte de transformation qui m’amène aujourd’hui à être extrêmement passionné par mes études et mon travail.
Ma PSP je l’ai modifié pour recevoir des jeux et applications « Homebrews » (faits-maison). Puis j’ai installé tout un environnement de développement et je suis devenu actif sur pas mal de forums et IRC (que j’ai découvert à ce moment-là). C’est dans cette période que j’ai beaucoup appri par moi-même et que j’ai aimé ça. Au final, j’ai participé à la réalisation d’un jeu en 3D qui n’est malheuresement jamais sorti, j’ai pu aidé pas mal de personnes et développé quelques applications.
Déjà, j’étais attiré par la VoIP et je voulais la porter sur PSP. Un autre projet que j’ai avancé mais qui n’a pas abouti. Mon domaine sur PSP était la connexion à distance, Adhoc avec le wifi de la PSP ou Infrastructure via Internet. J’ai développé une série de librairies permettant de simplifier les échanges entre deux PSP ou entre une PSP et un serveur.
J’ai perdu pas mal de mes petits travaux et j’ai complètement abandonné ce type de développement. Néanmoins j’ai retrouvé quelques sources d’un projet que j’avais sorti au public. Il s’agit d’un programme pour envoyer des données sur PSP via le wifi. Ce projet comporte un programme Client sur la PSP et un programme Serveur sur l’ordinateur. Il est traduit en 4 langues et comporte un semblant d’interface graphique.
I – Présentation
Le projet se nomme wifiConnect. Il a eu deux versions v0.1 et v1.
L’application cliente sur l’ordinateur est écrit en C. Il s’agit d’un client qui se connecte sur la PSP et qui peut envoyer des données. Un interface en VB a été écrite pour plus de simplicité sous Windows. Le client est compilé pour windows et linux.
L’application serveur sur la PSP est également écrit en C. Il reçoit les données de l’ordinateur. C’est un homebrew qui se lance depuis le menu Jeu de la PSP. Il est graphique et en 4 langues.
Le principe de connexion repose sur les threads et les sockets. De multiples vérifications sont faites pour assurer la bonne transmission des données : vérification de l’état de la batterie, du nombre d’octets transférés, de l’extension, et backup du fichier si écrasement.
Voilà les fonctionnalités principales :
II – Illustrations
Voici les illustrations du programme :
Ces graphismes ont été fait par Angelfall aka Baptiste Rouleau en 2007.
III – Le code
Ce programme a été écrit en C, voici le main() de l’application PSP :
#include "thread_net.h"
#include "choix_lang.h"
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
PSP_MODULE_INFO(MODULE_NAME, 0x1000, 1, 1);
/*------------- Define the main thread's attribute value --------------------*/
PSP_MAIN_THREAD_ATTR(0);
/*------------- dump_threadstatus() -----------------------------------------*/
void dump_threadstatus(void);
/*------------- Rappel de service de sortie ---------------------------------*/
int exit_callback(int arg1, int arg2, void *common)
{
sceKernelExitGame();
return 0;
}
/*------------- Rappel de service -------------------------------------------*/
int CallbackThread(SceSize args, void *argp)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/*------------- Monte le Rappel de service et envoie son ID -----------------*/
int SetupCallbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
int main(void)
{
SceUID thid;
int choix = 1;
char choixL[30];
pspDebugScreenInit();
SetupCallbacks();
if((choix=choix_lang()) < 0)
{
printfC(ROUGEA,"Failed : choix_lang() returns < 0. Exit...");
sceKernelDelayThread(3000 * 1000); //3s
sceKernelExitGame();
}
if(choix == 0)
sceKernelExitGame();
else if(choix == 1)
sprintf(choixL,"%s","Data/langFR.txt");
else if(choix == 2)
sprintf(choixL,"%s","Data/langEN.txt");
else if(choix == 3)
sprintf(choixL,"%s","Data/langES.txt");
else if(choix == 4)
sprintf(choixL,"%s","Data/langIT.txt");
else
sprintf(choixL,"%s","Data/langFR.txt");
if(openLangCfg(choixL,lang) != 0)
{
printfC(ROUGEA,"Failed : could not open language file ! Exit...");
sceKernelDelayThread(3000 * 1000); //3s
sceKernelExitGame();
}
if (pspSdkLoadInetModules() < 0)
{
printf("Failed pspSdkLoadInetModules()\n");
printfC(ROUGEA,lang[24]);
sceKernelDelayThread(3000 * 1000); //3s
sceKernelExitGame();
}
thid = sceKernelCreateThread("thread_net", thread_net, 0x18, 0x10000, PSP_THREAD_ATTR_USER, NULL);
if (thid < 0)
{
printf("Failed createThread()\n");
printfC(ROUGEA,lang[25]);
sceKernelSleepThread();
}
sceKernelStartThread(thid, 0, 0);
while(sceKernelWaitThreadEnd(thid,NULL) != 0) ;;
free(lang);
sceKernelExitGame();
return 0;
}
Et le Makefile d’un projet type PSP :
TARGET = WifiConnectv1
OBJS = main.o connect_to_apctl.o choix_apctl.o create_socket.o initialiseNetwork.o thread_net.o transfert.o fonctions.o graphics.o framebuffer.o choix_lang.o
YOURLIBS=
#USE_PSPSDK_LIBC = 1
INCDIR =
CFLAGS = -G0 -Wall -O2
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR = ./libj
LDFLAGS =
STDLIBS= -lpspgu -lpng -lz -lm -lpspwlan -lpsppower -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel
LIBS=$(STDLIBS)$(YOURLIBS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Wifi Connect v1
PSP_EBOOT_ICON= ICON0.PNG
PSP_EBOOT_PIC1= PIC1.PNG
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
IV – Sources et liens
Les sources de ce projet sont en téléchargement libre, pas de droits ni de licences. C’est à vous même si je doute que ça serve encore. Il suffit de me les demander par mail
Et voici quelques articles :
http://www.planetepsp.fr/wificonnect-v01-par-couac/2318
http://www.planetepsp.fr/wificonnect-v1/2355
psptests.wordpress.com/2007/06/18/wificonnect-v01/
www.pspgen.com/forums/wifi-connect-v1-t73472.html
Related Posts