2010-02-01 4 views
8

He estado usando Unimotion en mi application para leer los valores del sensor de movimiento para computadoras portátiles Apple, pero no he podido portar el código a 10.6 de 64 bits. (También he intentado SMSLib y tuvo la suerte tampoco.)¿Hay una API de "sensor de movimiento repentino" compatible con Snow Leopard disponible?

  • ¿Hay alguna sencilla 10,6 compatibles SMS API?

Si no hay otra alternativa, también estoy considerando parchar una de las bibliotecas. Tanto Unimotion y SMSLib utilice la siguiente llamada, que ha quedado en desuso en el 10,5 y removed from 10.6 64-bit:

result = IOConnectMethodStructureIStructureO(
    dataPort, kernFunc, structureInputSize, 
    &structureOutputSize, &inputStructure, 
    outputStructure); 
  • ¿Hay alguna manera sencilla para reemplazar esto con nuevas llamadas IOKit?

(This post realmente no consiguió mucho más allá de mí)

Respuesta

6

Si no hay alternativa, yo también estoy considerando parchear una de las bibliotecas. Tanto Unimotion y SMSLib utilice la siguiente llamada, que ha quedado en desuso en el 10,5 y removed from 10.6 64-bit:

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

¿Hay alguna manera sencilla para reemplazar esto con nuevas llamadas IOKit?

Ese mismo documento sugiere reemplazos. ¿Qué hay de este?

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 

Por lo que yo sé, no debería haber ninguna diferencia excepto por el orden de los argumentos. Dicho esto, nunca he usado I/O Kit, así que podría perderme alguna diferencia conceptual crítica que hará que esta llamada no funcione como la anterior.

+0

Sí, creo que puede tener razón. Después de buscar más, este ejemplo (http://developer.apple.com/mac/library/samplecode/SimpleUserClient/listing6.html) parece mostrar una asignación de IOConnectMethodScalarIStructureO() a IOConnectCallMethod(). Lo estoy probando ahora. Solo necesito pedirle a un amigo con una CPU de 64 bits que lo pruebe por mí. –

+0

Varios errores de compilación más adelante (¿sabe que tiene rutas codificadas para el SDK 10.4u en su proyecto?), Puedo confirmar que funciona en mi MBP. No pude vincular para 64 bits (mi MBP ejecuta Leopard), pero pude compilar limpiamente y ejecutar el producto de compilación de 32 bits. Característica fresca, por cierto. ☺ –

+1

Y ahora tiene un parche esperando por usted. ☺ http://code.google.com/p/websaver/issues/detail?id=3 –

1

No he utilizado esto en 10.6, pero funciona esto?

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

+0

Lamentablemente, parece que se usa Unimotion para la compatibilidad con SMS. (http://code.google.com/p/google-mac-qtz-patches/source/browse/trunk/MotionSensor/ReadMe) –

Cuestiones relacionadas