Blame |
Last modification |
View Log
| RSS feed
/* Copyright (C) 2010-2011 Circuits At Home, LTD. All rights reserved.
This software may be distributed and modified under the terms of the GNU
General Public License version 2 (GPL2) as published by the Free Software
Foundation and appearing in the file GPL2.TXT included in the packaging of
this file. Please note that GPL2 Section 2[b] requires that all works based
on this software must also be made publicly available under the terms of
the GPL2 ("Copyleft").
Contact information
-------------------
Circuits At Home, LTD
Web : http://www.circuitsathome.com
e-mail : support@circuitsathome.com
*/
#ifndef __CANONPS_H__
#define __CANONPS_H__
#include "ptp.h"
// PTP Operation Codes (PowerShot specific)
#define PS_OC_GetObjectSize 0x9001
#define PS_OC_StartShootingMode 0x9008
#define PS_OC_EndShootingMode 0x9009
#define PS_OC_ViewfinderOn 0x900B
#define PS_OC_ViewfinderOff 0x900C
#define PS_OC_ReflectChanges 0x900D
#define PS_OC_CheckEvent 0x9013
#define PS_OC_FocusLock 0x9014
#define PS_OC_FocusUnlock 0x9015
#define PS_OC_InitiateCaptureInMemory 0x901A
#define PS_OC_GetPartialObject 0x901B
#define PS_OC_GetViewfinderImage 0x901d
#define PS_OC_GetChanges 0x9020
#define PS_OC_GetFolderEntries 0x9021
// PTP PowerShot Extention Events
#define PS_EC_ShutDownCFDoorWasOpened 0xC001 /* The Device has shut down due to the opening of the SD card cover.*/
#define PS_EC_ResetHwError 0xC005 /* The device has generated a hardware error. */
#define PS_EC_AbortPCEvf 0xC006 /* The Viewfinder mode has been cancelled. */
#define PS_EC_EnablePCEvf 0xC007 /* The Viewfinder mode has been enablede. */
#define PS_EC_FullViewReleased 0xC008 /* Transfer timing of main image data */
#define PS_EC_ThumbnailReleased 0xC009 /* Transfer timing of thumbnail image data */
#define PS_EC_ChangeBatteryStatus 0xC00A /* The power condition of the camera has changed. */
#define PS_EC_PushedReleaseSw 0xC00B /* User has pressed the release swtich on camera. */
#define PS_EC_PropertyChanged 0xC00C /* A group of properties relating to release control have been changed. */
#define PS_EC_RotationAngleChanged 0xC00D /* The angle of rotation of the camera has been changed. */
#define PS_EC_ChangedByCamUI 0xC00E /* An operation control on the camera has been operated.*/
#define PS_EC_Shutdown 0xD001 /* Shutdown */
#define PS_EC_StartDirectTransfer 0xC011
#define PS_EC_StopDirectTransfer 0xC013
// PowerShot-specific Device Properties
#define PS_DPC_BeepMode 0xD001
#define PS_DPC_BatteryKind 0xD002
#define PS_DPC_BatteryStatus 0xD003
#define PS_DPC_UILockType 0xD004
#define PS_DPC_CameraMode 0xD005
#define PS_DPC_ImageQuality 0xD006
#define PS_DPC_FullViewFileFormat 0xD007
#define PS_DPC_ImageSize 0xD008
#define PS_DPC_SelfTime 0xD009
#define PS_DPC_FlashMode 0xD00A
#define PS_DPC_Beep 0xD00B
#define PS_DPC_ShootingMode 0xD00C
#define PS_DPC_ImageMode 0xD00D
#define PS_DPC_DriveMode 0xD00E
#define PS_DPC_EZoom 0xD00F
#define PS_DPC_MeteringMode 0xD010
#define PS_DPC_AFDistance 0xD011
#define PS_DPC_FocusingPoint 0xD012
#define PS_DPC_WhiteBalance 0xD013
#define PS_DPC_SlowShutterSetting 0xD014
#define PS_DPC_AFMode 0xD015
#define PS_DPC_ImageStabilization 0xD016
#define PS_DPC_Contrast 0xD017
#define PS_DPC_ColorGain 0xD018
#define PS_DPC_Sharpness 0xD019
#define PS_DPC_Sensitivity 0xD01A
#define PS_DPC_ParameterSet 0xD01B
#define PS_DPC_ISOSpeed 0xD01C
#define PS_DPC_Aperture 0xD01D
#define PS_DPC_ShutterSpeed 0xD01E
#define PS_DPC_ExpCompensation 0xD01F
#define PS_DPC_FlashCompensation 0xD020
#define PS_DPC_AEBExposureCompensation 0xD021
#define PS_DPC_AvOpen 0xD023
#define PS_DPC_AvMax 0xD024
#define PS_DPC_FocalLength 0xD025
#define PS_DPC_FocalLengthTele 0xD026
#define PS_DPC_FocalLengthWide 0xD027
#define PS_DPC_FocalLengthDenominator 0xD028
#define PS_DPC_CaptureTransferMode 0xD029
#define PS_DPC_Zoom 0xD02A
#define PS_DPC_NamePrefix 0xD02B
#define PS_DPC_SizeQualityMode 0xD02C
#define PS_DPC_SupportedThumbSize 0xD02D
#define PS_DPC_SizeOfOutputDataFromCamera 0xD02E
#define PS_DPC_SizeOfInputDataToCamera 0xD02F
#define PS_DPC_RemoteAPIVersion 0xD030
#define PS_DPC_FirmwareVersion 0xD031
#define PS_DPC_CameraModel 0xD032
#define PS_DPC_CameraOwner 0xD033
#define PS_DPC_UnixTime 0xD034
#define PS_DPC_CameraBodyID 0xD035
#define PS_DPC_CameraOutput 0xD036
#define PS_DPC_DispAv 0xD037
#define PS_DPC_AvOpenApex 0xD038
#define PS_DPC_DZoomMagnification 0xD039
#define PS_DPC_MlSpotPos 0xD03A
#define PS_DPC_DispAvMax 0xD03B
#define PS_DPC_AvMaxApex 0xD03C
#define PS_DPC_EZoomStartPosition 0xD03D
#define PS_DPC_FocalLengthOfTele 0xD03E
#define PS_DPC_EZoomSizeOfTele 0xD03F
#define PS_DPC_PhotoEffect 0xD040
#define PS_DPC_AssistLight 0xD041
#define PS_DPC_FlashQuantityCount 0xD042
#define PS_DPC_RotationAngle 0xD043
#define PS_DPC_RotationScene 0xD044
#define PS_DPC_EventEmulateMode 0xD045
#define PS_DPC_DPOFVersion 0xD046
#define PS_DPC_TypeOfSupportedSlideShow 0xD047
#define PS_DPC_AverageFilesizes 0xD048
#define PS_DPC_ModelID 0xD049
class PSStateHandlers : public PTPStateHandlers
{
public:
virtual void OnSessionOpenedState(PTP *ptp);
};
class CanonPS : public PTP
{
public:
// ISO Speed Values
enum { IsoAuto = 0, Iso80 = 0x45, Iso100 = 0x48, Iso200 = 0x50, Iso400 = 0x58, Iso800=0x60 };
// White Balance Values
enum { WbAuto = 0, WbSunny, WbCloudy, WbTungsten, WbFluorescent, WbFlash, WbCustom, WbUnknown };
// Exposure Compensation Values (same values for both exposure compensation and flash compensation)
enum { ExpCompDown2 = 0x08, ExpCompDown1_2d3= 0x0B, ExpCompDown1_1d3= 0x0D, ExpCompDown1 = 0x10, ExpCompDown2d3 = 0x13,
ExpCompDown1d3 = 0x15, ExpComp_0 = 18, ExpCompUp1d3 = 0x1B, ExpCompUp2d3 = 0x1D, ExpCompUp1 = 0x20,
ExpCompUp1_1d3 = 0x23, ExpCompUp1_2d3 = 0x25, ExpCompUp2 = 0x28 };
// Image Quality Values
enum { ImgQualityNormal = 2, ImageQualityFine = 3, ImageQualitySuperb = 5 };
// Image Size Values
enum { ImgSizeLarge, ImgSizeMedium1, ImgSizeSmall, ImgSizeMedium2 };
CanonPS(uint8_t addr, uint8_t epin, uint8_t epout, uint8_t epint, uint8_t nconf, PTPStateHandlers *s);
uint16_t Initialize(bool binit);
uint16_t Capture();
uint16_t EventCheck(PTPReadParser *parser);
};
#endif // __CANONPS_H__