//--------------------------------------------------------------------- bool CanonCameraWrapper::beginLiveView(){ printf("Begining live view\n"); preCommand(); EdsError err = EDS_ERR_OK; if(evfMode == 0){ evfMode = 1; // Set to the camera. err = EdsSetPropertyData(theCamera, kEdsPropID_Evf_Mode, 0, sizeof(evfMode), &evfMode); } if( err == EDS_ERR_OK){ // Set the PC as the current output device. device = kEdsEvfOutputDevice_PC; // Set to the camera. err = EdsSetPropertyData(theCamera, kEdsPropID_Evf_OutputDevice, 0, sizeof(device), &device); } //Notification of error if(err != EDS_ERR_OK){ // It doesn't retry it at device busy if(err == EDS_ERR_DEVICE_BUSY){ printf("BeginLiveView - device is busy\n"); //CameraEvent e("DeviceBusy"); //_model->notifyObservers(&e); }else{ printf("BeginLiveView - device is busy\n"); } return false; } }
bool CanonCameraWrapper::sendCommand( EdsCameraCommand inCommand, EdsInt32 inParam){ EdsError err = EDS_ERR_OK; if( preCommand() ){ err = EdsSendCommand(theCamera, inCommand, inParam); postCommand(); if(err == EDS_ERR_OK){ return true; } if(err == EDS_ERR_DEVICE_BUSY){ printf("CanonCameraWrapper::sendCommand - EDS_ERR_DEVICE_BUSY\n"); return false; } } return false; }
/////////////////////////////////////////////////////////////////////////////// // PUBLIC FUNCTIONS // void MatrixDisplay::initDisplay(uint8_t displayNum, uint8_t pin, bool master) { // Associate the pin with this display pDisplayPins[displayNum] = pin; // init the hardware pinMode(pin, OUTPUT); bitBlast(pin, 1); // Disable chip (pull high) selectDisplay(displayNum); // Send Precommand preCommand(); // Take advantage of successive mode and write the options writeDataBE(8,HT1632_CMD_SYSDIS, true); //sendOptionCommand(HT1632_CMD_MSTMD); writeDataBE(8,HT1632_CMD_SYSON,true); writeDataBE(8,HT1632_CMD_COMS10,true); writeDataBE(8,HT1632_CMD_LEDON,true); writeDataBE(8,HT1632_CMD_BLOFF,true); writeDataBE(8,HT1632_CMD_PWM+15,true); releaseDisplay(displayNum); clear(displayNum,true); }
//--------------------------------------------------------------------- bool CanonCameraWrapper::downloadLastImage(){ preCommand(); EdsVolumeRef theVolumeRef = NULL ; EdsDirectoryItemRef dirItemRef_DCIM = NULL; EdsDirectoryItemRef dirItemRef_Sub = NULL; EdsDirectoryItemRef dirItemRef_Image = NULL; EdsDirectoryItemInfo dirItemInfo_Image; EdsError err = EDS_ERR_OK; EdsUInt32 Count = 0; bool success = false; //get the number of memory devices err = EdsGetChildCount( theCamera, &Count ); if( Count == 0 ){ printf("Memory device not found\n"); err = EDS_ERR_DEVICE_NOT_FOUND; return false; } // Download Card No.0 contents err = EdsGetChildAtIndex( theCamera, 0, &theVolumeRef ); // if ( err == EDS_ERR_OK ){ // printf("getting volume info\n"); // //err = EdsGetVolumeInfo( theVolumeRef, &volumeInfo ) ; // } //Now lets find out how many Folders the volume has if ( err == EDS_ERR_OK ){ err = EdsGetChildCount( theVolumeRef, &Count ); if ( err == EDS_ERR_OK ){ //Lets find the folder called DCIM bool bFoundDCIM = false; for(int i = 0; i < Count; i++){ err = EdsGetChildAtIndex( theVolumeRef, i, &dirItemRef_DCIM ) ; if ( err == EDS_ERR_OK ){ EdsDirectoryItemInfo dirItemInfo; err = EdsGetDirectoryItemInfo( dirItemRef_DCIM, &dirItemInfo ); if( err == EDS_ERR_OK){ string folderName = dirItemInfo.szFileName; if( folderName == "DCIM" ){ bFoundDCIM = true; printf("Found the DCIM folder at index %i\n", i); break; } } } //we want to release the directories that don't match easyRelease(dirItemRef_DCIM); } //This is a bit silly. //Essentially we traverse into the DCIM folder, then we go into the last folder in there, then we //get the last image in last folder. if( bFoundDCIM && dirItemRef_DCIM != NULL){ //now we are going to look for the last folder in DCIM Count = 0; err = EdsGetChildCount(dirItemRef_DCIM, &Count); bool foundLastFolder = false; if( Count > 0 ){ int lastIndex = Count-1; EdsDirectoryItemInfo dirItemInfo_Sub; err = EdsGetChildAtIndex( dirItemRef_DCIM, lastIndex, &dirItemRef_Sub ) ; err = EdsGetDirectoryItemInfo( dirItemRef_Sub, &dirItemInfo_Sub); printf("Last Folder is %s \n", dirItemInfo_Sub.szFileName); EdsUInt32 jpgCount = 0; err = EdsGetChildCount(dirItemRef_Sub, &jpgCount ); if( jpgCount > 0 ){ int latestJpg = jpgCount-1; err = EdsGetChildAtIndex(dirItemRef_Sub, latestJpg, &dirItemRef_Image ) ; err = EdsGetDirectoryItemInfo(dirItemRef_Image, &dirItemInfo_Image); printf("Latest image is %s \n", dirItemInfo_Image.szFileName); success = true; }else{ printf("Error - No jpegs inside %s\n", dirItemInfo_Image.szFileName); } }else{ printf("Error - No subfolders inside DCIM!\n"); } } } } if( success ){ success = downloadImage(dirItemRef_Image); } easyRelease(theVolumeRef); easyRelease(dirItemRef_DCIM); easyRelease(dirItemRef_Sub); easyRelease(dirItemRef_Image); postCommand(); return success; }