bool CanonDriver::getFocusMode(FocusMode * fm, ManualFocusMode * mfm) { Datagram dgm; if (!sendRequestAndWait(0x40,0x8000,dgm)) return false; *fm = (FocusMode)(dgm.bdata()[0]); if (*fm == FMManual) { if (!sendRequestAndWait(0x43,0x8000,dgm)) return false; *mfm = (ManualFocusMode)(dgm.bdata()[0]); } return true; }
bool CanonDriver::getAutoExposure(bool * autoexp, AutoExposureMode * aem) { Datagram dgm; if (!sendRequestAndWait(0x82,0x8000,dgm)) return false; //dgm.print(); *autoexp = (dgm.bdata()[0] == 0x00); if (!*autoexp) { *aem = AXPundef; return true; } if (!sendRequestAndWait(0x87,0x8000,dgm)) return false; unsigned short us = dgm.bdata()[0]; us = (us << 8) | dgm.bdata()[1]; *aem = (AutoExposureMode)(us); //dgm.print(); return true; }
bool CanonDriver::getSpeeds(unsigned short * pan, unsigned short * tilt, unsigned short * zoom) { Datagram dgm; if (!sendRequestAndWait(0x3B,0x8000,dgm)) return false; const unsigned char * data = dgm.bdata(); *pan = data[0]; *pan = (*pan << 8) | data[1]; *tilt = data[2]; *tilt = (*tilt << 8) | data[3]; *zoom = data[4]; *zoom = (*zoom << 8) | data[5]; return true; }