]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/sensorboards/mts300/MagP.nc
Add mic and mag driver .
[tinyos-2.x.git] / tos / sensorboards / mts300 / MagP.nc
diff --git a/tos/sensorboards/mts300/MagP.nc b/tos/sensorboards/mts300/MagP.nc
new file mode 100644 (file)
index 0000000..a2fe23d
--- /dev/null
@@ -0,0 +1,122 @@
+#include "mts300.h"\r
+#include "Timer.h"\r
+#include "I2C.h"\r
+\r
+module MagP\r
+{\r
+  provides interface Init;\r
+  provides interface StdControl;\r
+  provides interface Mag;\r
+  provides interface Atm128AdcConfig as ConfigX;\r
+  provides interface Atm128AdcConfig as ConfigY;\r
+  provides interface ResourceConfigure as ResourceX;\r
+  provides interface ResourceConfigure as ResourceY;\r
+\r
+       uses interface GeneralIO as MagPower;\r
+       uses interface MicaBusAdc as MagAdcX;\r
+       uses interface MicaBusAdc as MagAdcY;\r
+  uses interface I2CPacket<TI2CBasicAddr>;\r
+  uses interface Resource;\r
+}\r
+\r
+implementation\r
+{\r
+  uint8_t gainData[2];\r
+\r
+  command error_t Init.init()\r
+  {\r
+    call MagPower.makeOutput();\r
+               call MagPower.clr();\r
+\r
+    return SUCCESS;\r
+       }\r
+\r
+  command error_t StdControl.start()\r
+  {\r
+    call MagPower.set();\r
+    return SUCCESS;\r
+  }\r
+\r
+  command error_t StdControl.stop()\r
+  {\r
+    call MagPower.clr();\r
+    call MagPower.makeInput();\r
+\r
+    return SUCCESS;\r
+  }\r
+\r
+  command error_t Mag.gainAdjustX(uint8_t val)\r
+  {\r
+    gainData[0] = 1;    // pot subaddr\r
+    gainData[1] = val;  // value to write\r
+    return call Resource.request();\r
+  }\r
+  command error_t Mag.gainAdjustY(uint8_t val)\r
+  {\r
+    gainData[0] = 0;    // pot subaddr\r
+    gainData[1] = val;  // value to write\r
+    return call Resource.request();\r
+  }\r
+  /**\r
+  * Resource request\r
+  *\r
+  */\r
+  event void Resource.granted()\r
+  {\r
+    if ( call I2CPacket.write(0x3,TOS_MAG_POT_ADDR, 2, gainData) == SUCCESS)\r
+    {\r
+      return ;\r
+    }\r
+  }\r
+  /**\r
+  * I2CPot2\r
+  *\r
+  */\r
+  async event void I2CPacket.readDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data)\r
+  {\r
+    return ;\r
+  }\r
+\r
+  async event void I2CPacket.writeDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data)\r
+  {\r
+    call Resource.release();\r
+    if (gainData[0] ==1)\r
+    {\r
+      signal Mag.gainAdjustXDone(error);\r
+    }\r
+    if (gainData[0] ==0)\r
+    {\r
+      signal Mag.gainAdjustYDone(error);\r
+    }\r
+    return ;\r
+  }\r
+\r
+  async command uint8_t ConfigX.getChannel() {\r
+    return call MagAdcX.getChannel();\r
+  }\r
+\r
+  async command uint8_t ConfigX.getRefVoltage() {\r
+    return ATM128_ADC_VREF_OFF;\r
+  }\r
+\r
+  async command uint8_t ConfigX.getPrescaler() {\r
+    return ATM128_ADC_PRESCALE;\r
+  }\r
+\r
+  async command uint8_t ConfigY.getChannel() {\r
+    return call MagAdcY.getChannel();\r
+  }\r
+\r
+  async command uint8_t ConfigY.getRefVoltage() {\r
+    return ATM128_ADC_VREF_OFF;\r
+  }\r
+\r
+  async command uint8_t ConfigY.getPrescaler() {\r
+    return ATM128_ADC_PRESCALE;\r
+  }\r
+\r
+  async command void ResourceX.configure() { }  \r
+  async command void ResourceX.unconfigure() { } \r
+  async command void ResourceY.configure() { }  \r
+  async command void ResourceY.unconfigure() {}\r
+}
\ No newline at end of file