georges.bessolo
21/04/2005 à 10:57
Je recherche tous azimuts comment développer moi-même un numéroteur téléphonique, comme "Palm Dialer". pour pouvoir composer des numéros de téléphone à partir de mon Palm Bluettoth.
Quelqu'un saurait-il me dire comment procéder, par où commencer ?
- Est-il possible de trouver le code source de "Palm Dialer 's telephone" ?
Merci.
Dans quel langage souhaites-tu programmer? Si c'est en C, il faudra attendre un de nos gourous C.
HB++ fournira, dans sa future version 1.06, un exemple de classes Bluetooth, avec lesquelles tu pourras certainement trouver comment programmer un Dialer.
Quand à trouver les sources du Dialer de PalmOS, franchement j'en doute fort!
Patrice
21/04/2005 à 11:04
Non, les sources du numéroteur de palmOne ne sont pas officiellement disponibles. La programmation de ce type de logiciel n'est cependant pas bien complexe. En gros, il suffit de :
- Ouvrir un port série (celui correspondant au périphérique BT pour le cas qui t'intéresse). Il existe 2 ou 3 samples chez PalmSource et palmOne pour cela.
- Transmettre la commande de numérotation au téléphone (c'est plus ou moins standard mais il reste toujours des spécificités selon les téléphones). Pour cela, il vaut mieux chercher les informations du côté des constructeurs.
- Fermer le port série.
En général les GSM supportent tous la norme GSM, donc la commande devrait être:
ATD<no_telephone>;
auquel il faut en général rajouter le rn pour valider la commande...
le ";" veut dire de passer l'appel en mode VOICE, si tu ne le mets pas, il passera normalement l'appel en mode Fax...
Donc par exemple pour appeler le 0122334455 en mode VOICE:
ATD0122334455;
Patrice
21/04/2005 à 14:47
La difficulté, selon le modem, consiste à trouver le bon mode pour passer en mode vocal sans raccrocher immédiatement à la fermeture du port série (et en général, la documentation est toujours très équivoque sur ce point).
Le ';' à la fin de la commande signifie normalement que tu restes en mode commande après l'envoi de la séquence. Ce qui évite en général le raccrochage en mode vocal mais pas toujours (hélas)...
CITATION(Patrice)
La difficulté, selon le modem, consiste à trouver le bon mode pour passer en mode vocal sans raccrocher immédiatement à la fermeture du port série (et en général, la documentation est toujours très équivoque sur ce point).
Le ';' à la fin de la commande signifie normalement que tu restes en mode commande après l'envoi de la séquence. Ce qui évite en général le raccrochage en mode vocal mais pas toujours (hélas)...
Bah j'ai essayé et sur tous les GSM (et modems GSM) que j'ai pu tester, ça passe (Nokia, SE, Wavecom etc...)...
Après, en effet parfois il y a des chaînes d'init...
georges.bessolo
28/04/2005 à 15:22
En fait j'utilise CodeWarrior et Palm OS 5 SDK (68K) R3.
Patrice
28/04/2005 à 17:03
Dans ce cas, cf. ma réponse (et les samples de PalmSource et palmOne)
georges.bessolo
28/04/2005 à 17:48
Je cale complètement. Ca fait des semaines que je galère.
Y'aurait t'il un developpeur capable (moyennant finance bien sûr) de me développer un morceau de code qui sous CodeWarrior composerait un numéro de téléphone à l'aide de l'interface bluetooth ?
Patrice
28/04/2005 à 18:03

Si je te passe 3 fonctions (à savoir ouverture du profil série BT, écriture d'une chaîne de caractères sur le port et fermeture du port), est-ce que tu te crois capable d'enoyer la commande de composition du numéro ?
Après il te restera à proposer à l'utilisateur de sélectionner son téléphone préféré pour la composition (par défaut, le code affiche le dialogue de sélection du périphérique à chaque ouverture).
Tout ça à base de samples, parce qu'il n'y a aucune raison de réinventer la poudre...
georges.bessolo
28/04/2005 à 18:54
Je suis pas un as, mais je peux essayer.
Patrice
28/04/2005 à 19:48
CODE
#include <PalmOS.h>
#include <BtCommVdrv.h>
// Communication management
static Boolean OpenBTPort(void);
static Boolean WriteBTPort(Char c);
static void CloseBTPort(void);
//-----------------------------------------------------
// Open serial port over BT (RFCOMM)
//-----------------------------------------------------
static Boolean OpenBTPort(void)
{
Err err;
SrmOpenConfigType config;
BtVdOpenParams param;
BtLibSdpUuidType uuid;
// Prepare parameters
MemSet(&uuid, sizeof(uuid), 0);
uuid.size = sizeof(uuid);
uuid.UUID[0] = 0x11; // Serial port UUID
uuid.UUID[1] = 0x01;
MemSet(¶m, sizeof(param), 0);
param.role = btVdClient;
param.u.client.method = btVdUseUuidList;
param.u.client.u.uuidList.tab = &uuid;
param.u.client.u.uuidList.len = 1;
MemSet(&config, sizeof(config), 0);
config.function = 0;
config.drvrDataP = (MemPtr) ¶m;
config.drvrDataSize = sizeof(param);
// Open port
err = SrmExtOpen(sysFileCVirtRfComm, &config, sizeof(config), &serport);
// Return code
return (err == errNone);
}
//-----------------------------------------------------
// Write one char on serial port
//-----------------------------------------------------
static Boolean WriteBTPort(Char c)
{
Err err = serErrNotOpen;
if (portok)
{
// Send commande
SrmSend(serport, &c, 1, &err);
// Report error
if (err != errNone)
{
FrmAlert(bluwFormID);
}
}
return (err == errNone);
}
//-----------------------------------------------------
// Close BT port
//-----------------------------------------------------
static void CloseBTPort(void)
{
if (portok)
{
SrmClose(serport);
}
}
Franchement, c'est du basique...
Avec portok une variable globale boolénne, résultat de la fonction OpenBTPort(), je suppose?
Patrice
28/04/2005 à 20:08
Euh oui... et le "handle" du port ouvert dans serport... (pas hyper clean

)
CODE
Boolean portok; // Port status
UInt16 serport; // Serial port ID
Et une alerte en ressources pour les erreurs de comm (dans le Write)...
georges.bessolo
28/04/2005 à 20:54
Jusque là tout va bien.
Le port bluetooth est ouvert, on peut y envoyer des caractères. Mais quelles sont les commandes permettant de commander la numérotation ?
Où trouver la liste des commandes ? Est-ce que ces fonctions ont un rapport avec les commandes API décrites dans le Palm OS Programmer's API Référence ?
Par exemple la fonctionTelSpcCallNumber permettant la composition de numéro ?
Relis le 1er message de lmame plus haut...
Patrice
28/04/2005 à 20:59
CITATION(georges.bessolo)
Par exemple la fonctionTelSpcCallNumber permettant la composition de numéro ?
Hum, le "Telephony Manager" n'est implémenté que sur les smartphones (Treo par exemple). Rien à voir avec ce que tu cherches à faire...
georges.bessolo
29/04/2005 à 00:54
En fait la fonction :
erreur=SrmExtOpen(sysFileCVirtRfComm, &config, sizeof(config), &btPortID);
et là erreur = 0x030A (serErrNotSupported).
Le port ne s'ouvre pas, et je n'arrive pas à comprendre pourquoi la fonction SrmExtOpen ne fonctionne pas.
Cela n'est t'il pas dû au fait que l'on devrait charger la librairie "Serial Library" ???
Patrice
29/04/2005 à 06:14
CITATION(Le PalmOS Reference Guide)
serErrNotSupported: The Serial Manager already has a port open.
Tu devrais passer plus de temps dans la littérature...
georges.bessolo
29/04/2005 à 08:33
Moi j'ai ça pour le port est déjà ouvert: serErrAlreadyOpen.
georges.bessolo
29/04/2005 à 08:41
Je suis allé dans:
http://www.palmos.com/dev/support/docs/pro...mms_SerRef.html
et j'ai trouvé çà:
serErrBadPort
The port parameter does not specify a valid port.
Si j'ai bien compris sysFileCVirtRfComm n'est pas un port valide ?
Patrice
29/04/2005 à 09:27
1) Si tu utilises la doc de Protein pour du dév. 68k...
2) Si tu as une erreur serErrNotSupported, qu'est-ce que tu vas chercher avec d'autres erreurs ???
georges.bessolo
29/04/2005 à 10:14
Mais alors, comment continuer mon developpement si je ne sais pas où je vais. Je crois qu'il est bon que je sache pourquoi !
georges.bessolo
29/04/2005 à 10:16
La doc Protein ne convient t'elle pas ?
georges.bessolo
29/04/2005 à 13:09
Voilà, j'ai réussi grâce à votre aide à tous.
L'erreur (serErrNotSupported) retournée par SrmExtOpen était dûe au fait qu'avant toute chose j'avais chargée la librairie bluetooth (btLib) par:
erreur=BtLibOpen(gBtLibRefNum,false);
J'ai supprimé la ligne est c'est OK, le bonheur quoi

!!!
Je vous remercie tous pour votre aide, sans quoi je n'y serais pas arrivé.
Juste une dernière question :
La commande ATD<no_telephone> doit faire partie d'une liste de commandes. Sauriez-vous me dire où trouver la liste complète ?
merci encore
CITATION(georges.bessolo)
Juste une dernière question :
La commande ATD<no_telephone> doit faire partie d'une liste de commandes. Sauriez-vous me dire où trouver la liste complète ?
Un
document de ce style devrait t'être utile!
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez
cliquer ici.