2010-02-01 6 views
8

J'ai utilisé Unimotion dans mon application pour lire les valeurs de détecteur de mouvement pour les ordinateurs portables Apple, mais j'ai été incapable de porter le code à 10,6 64 bits. (J'ai aussi essayé SMSLib et a eu la chance pas non plus.)Y a-t-il une API «détecteur de mouvement soudain» compatible avec Snow Leopard?

  • Y at-il compatible 10.6 API simple SMS?

S'il n'y a pas d'alternative, je considère aussi patcher l'une des bibliothèques. Les deux Unimotion et SMSLib utilisent l'appel suivant, qui a été dépréciée à 10,5 et removed from 10.6 64-bit:

result = IOConnectMethodStructureIStructureO(
    dataPort, kernFunc, structureInputSize, 
    &structureOutputSize, &inputStructure, 
    outputStructure); 
  • est-il un moyen simple de remplacer cette avec de nouveaux appels IOKit?

(This post ne m'a pas vraiment obtenir beaucoup plus loin)

Répondre

6

S'il n'y a pas d'autre solution, j'envisage également patcher une des bibliothèques. Les deux Unimotion et SMSLib utilisent l'appel suivant, qui a été dépréciée à 10,5 et removed from 10.6 64-bit:

result = IOConnectMethodStructureIStructureO(
    dataPort, kernFunc, structureInputSize, 
    &structureOutputSize, &inputStructure, 
    outputStructure); 

est-il un moyen simple de le remplacer par de nouveaux appels IOKit?

Ce même document suggère des remplacements. Qu'en est-il de celui-ci?

kern_return_t 
IOConnectCallStructMethod(
    mach_port_t connection,  // In 
    uint32_t  selector,  // In 
    const void *inputStruct,  // In 
    size_t  inputStructCnt, // In 
    void  *outputStruct,  // Out 
    size_t  *outputStructCnt) // In/Out 

Pour autant que je sache, il devrait y avoir aucune différence à l'exception de l'ordre des arguments. Cela dit, je n'ai jamais utilisé Kit d'E/S, donc je pourrais manquer une différence conceptuelle critique qui fera que cet appel ne fonctionnera pas comme l'ancien.

+0

Oui, je pense que vous avez peut-être raison. Après quelques recherches, cet exemple (http://developer.apple.com/mac/library/samplecode/SimpleUserClient/listing6.html) semble montrer un mappage de IOConnectMethodScalarIStructureO() à IOConnectCallMethod(). Je vais essayer maintenant. Juste besoin de demander à un ami avec un processeur 64 bits pour le tester pour moi. –

+0

Plusieurs échecs de compilation plus tard (vous savez que vous avez des chemins codés en dur vers le SDK 10.4u dans votre projet?), Je peux confirmer que cela fonctionne sur mon MBP. Je n'étais pas capable de lier pour 64 bits (mon MBP exécute Leopard), mais j'ai pu compiler proprement et exécuter le produit de construction 32 bits. Fonctionnalité cool, BTW. ☺ –

+1

Et maintenant vous avez un patch qui vous attend. Code http://code.google.com/p/websaver/issues/detail?id=3 –

1

Je n'ai pas utilisé en 10.6, mais cela fonctionne?

http://code.google.com/p/google-mac-qtz-patches/

+0

Malheureusement, il semble utiliser Unimotion pour le support SMS. (http://code.google.com/p/google-mac-qtz-patches/source/browse/trunk/MotionSensor/ReadMe) –