📄 magp.nc
字号:
#include "mts300.h"#include "Timer.h"#include "I2C.h"module MagP{ provides interface SplitControl; provides interface Mag; provides interface Atm128AdcConfig as ConfigX; provides interface Atm128AdcConfig as ConfigY; uses interface Timer<TMilli>; uses interface GeneralIO as MagPower; uses interface MicaBusAdc as MagAdcX; uses interface MicaBusAdc as MagAdcY; uses interface I2CPacket<TI2CBasicAddr>; uses interface Resource as I2CResource;}implementation{ uint8_t gainData[2]; command error_t SplitControl.start() { call MagPower.makeOutput(); call MagPower.set(); call Timer.startOneShot(100); return SUCCESS; } event void Timer.fired() { signal SplitControl.startDone(SUCCESS); } command error_t SplitControl.stop() { call MagPower.clr(); call MagPower.makeInput(); signal SplitControl.stopDone(SUCCESS); return SUCCESS; } command error_t Mag.gainAdjustX(uint8_t val) { gainData[0] = 1; // pot subaddr gainData[1] = val; // value to write return call I2CResource.request(); } command error_t Mag.gainAdjustY(uint8_t val) { gainData[0] = 0; // pot subaddr gainData[1] = val; // value to write return call I2CResource.request(); } /** * Resource request * */ event void I2CResource.granted() { if ( call I2CPacket.write(0x3,TOS_MAG_POT_ADDR, 2, gainData) == SUCCESS) { return ; } } /** * I2CPot2 * */ async event void I2CPacket.readDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data) { return ; } async event void I2CPacket.writeDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data) { call I2CResource.release(); if (gainData[0] ==1) { signal Mag.gainAdjustXDone(error); } if (gainData[0] ==0) { signal Mag.gainAdjustYDone(error); } return ; } async command uint8_t ConfigX.getChannel() { return call MagAdcX.getChannel(); } async command uint8_t ConfigX.getRefVoltage() { return ATM128_ADC_VREF_OFF; } async command uint8_t ConfigX.getPrescaler() { return ATM128_ADC_PRESCALE; } async command uint8_t ConfigY.getChannel() { return call MagAdcY.getChannel(); } async command uint8_t ConfigY.getRefVoltage() { return ATM128_ADC_VREF_OFF; } async command uint8_t ConfigY.getPrescaler() { return ATM128_ADC_PRESCALE; } default event error_t Mag.gainAdjustXDone(bool result) { return result; } default event error_t Mag.gainAdjustYDone(bool result) { return result; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -