Cet article est basé sur une histoire vraie. Imaginez que vous ayez besoin de transférer des contacts d'une carte SIM à une autre. Il y a forcément une application pour ça, n'est ce pas? Sauf que... le téléphone dont vous disposez n'est pas un smartphone, mais un vieux téléphone tout bête fabriqué par une petite société finlandaise qui a été rachetée il y a quelques années par un éditeur de logiciel. Malheureusement le nouveau propriétaire a apparemment décidé de n'assurer le support que pour les tout derniers modèles. Conséquence: Il n'y a plus de logiciel officiel disponible pour manipuler vos contacts. Bref, vous vous préparez mentalement à recopier tous vos contacts à la main... à moins que...
Ha bhen ça, c'est un peu bête
Si vous avez un YoctoHub-GSM sous la main, vous êtes sauvé! Il se trouve que l'API Yoctopuce est capable d'exécuter des commandes AT qui permettent, entre autres, de manipuler les contacts d'une carte SIM. Dans notre cas, le plus simple consiste à utiliser l'API en ligne de commande.
Le YoctoHub-GSM à la rescousse.
Pour réaliser la manip, placez la carte SIM contenant les contacts à copier dans le YoctoHub. Connectez le Hub par USB à votre ordinateur, par précaution, mettez le hub en mode "Disable IP connectivity" et configurez le code PIN. Une fois que c'est fait, il ne vous reste qu'à utiliser la commande YCellular de l'API en ligne de commande. La commande AT pour récupérer les contacts stockés dans la SIM est "+CPBR". Par exemple, pour récupérer les contacts 1 à 99, il suffit de taper:
C:\>ycellular any _AT +CPBR=1,99 OK: YHUBGSM1-5D645.cellular._AT = +CPBR: 1,"+3221285435",145,"Tintin" +CPBR: 2,"+3221287854",145,"Cpt Haddock" +CPBR: 3,"+3221285745",145,"Pr Tournesol" +CPBR: 4,"+3221535533",145,"Dupont" +CPBR: 5,"+3221535533",145,"Dupond" +CPBR: 6,"+3221286571",145,"Boucherie Sanzot" +CPBR: 7,"+3221568994",145,"S. Lampion" +CPBR: 8,"+3938583722",145,"Bianca" OK
La liste est au format +CPBR: position dans la SIM,Numéro de téléphone,encoding,nom.
Pour écrire un contact dans une SIM, il suffit d'utiliser la commande AT +CPBW= suivie du contact au même format. Attention, il faut bien quoter les guillemets avec des backslashs. Ainsi pour enregistrer le numéro de téléphone de Tintin dans la SIM à la position 1, on tape:
C:\>ycellular any _AT "+CPBW=1,\"+3221285435\",145,\"Tintin\"" OK: YHUBGSM1-5D645.cellular._AT = OK
Par conséquent, il est trivial de réinjecter une liste contacts dans une autre SIM. Il suffit d'écrire un petit script basé sur la liste rendue par la première commande. On peut même en profiter pour faire un brin de ménage :-)
ycellular any _AT "+CPBW=1,\"+3221285435\",145,\"Tintin\"" ycellular any _AT "+CPBW=2,\"+3221287854\",145,\"Cpt Haddock\"" ycellular any _AT "+CPBW=3,\"+3221285745\",145,\"Pr Tournesol\"" ycellular any _AT "+CPBW=4,\"+3221535533\",145,\"Dupont\"" ycellular any _AT "+CPBW=5,\"+3221535533\",145,\"Dupond\"" ycellular any _AT "+CPBW=6,\"+3221286571\",145,\"Boucherie Sanzot\"" ycellular any _AT "+CPBW=7,\"+3938583722\",145,\"Bianca\""
Il ne reste plus qu'à mettre la nouvelle SIM dans le téléphone, et voilà! Un épineux problème résolu en quelques minutes sans même avoir à installer le moindre driver.