OSDN Git Service

namespaceを少し整理。
authorMRSa <mrsa@myad.jp>
Sat, 28 Aug 2021 06:10:24 +0000 (15:10 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 28 Aug 2021 06:10:24 +0000 (15:10 +0900)
PIXPRO WPZ2用制御コードのマージ(動作はしない。)

148 files changed:
.idea/codeStyles/Project.xml
.idea/deploymentTargetDropDown.xml [deleted file]
.idea/dictionaries/MRSa.xml
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/console/ConsolePanelControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/example/ExamplePictureControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/preference/CameraPreference.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/CameraPreference.kt with 94% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/preference/CameraPreferenceKeySet.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/CameraPreferenceKeySet.kt with 88% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/preference/ICameraPreferenceProvider.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ICameraPreferenceProvider.kt with 86% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/preference/ICameraPreferenceUpdater.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ICameraPreferenceUpdater.kt with 81% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/operation/CameraClickKeyDownListener.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraClickKeyDownListener.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/operation/CameraControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraControl.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/operation/CameraXCameraControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraXCameraControl.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/operation/CameraXCameraStatusHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraXCameraStatusHolder.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/operation/CameraXCameraStatusListHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraXCameraStatusListHolder.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/preview/PreviewFragment.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/preview/PreviewFragment.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/IPanasonicApiService.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/IPanasonicApiService.kt with 60% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/IPanasonicCamera.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/IPanasonicCamera.kt with 85% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/IPanasonicCameraHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/IPanasonicCameraHolder.kt with 80% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/connection/PanasonicCameraConnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/connection/PanasonicCameraConnectSequence.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/connection/PanasonicCameraConnection.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/connection/PanasonicCameraConnection.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/connection/PanasonicCameraDisconnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/connection/PanasonicCameraDisconnectSequence.kt with 84% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/connection/PanasonicSsdpClient.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/connection/PanasonicSsdpClient.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/liveview/PanasonicLiveViewControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/liveview/PanasonicLiveViewControl.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/operation/CameraPowerOffPanasonic.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/operation/CameraPowerOffPanasonic.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/operation/PanasonicCameraCaptureControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/operation/PanasonicCameraCaptureControl.kt with 79% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/operation/PanasonicCameraFocusControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/operation/PanasonicCameraFocusControl.kt with 88% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/operation/PanasonicCameraZoomLensControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/operation/PanasonicCameraZoomLensControl.kt with 94% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/operation/takepicture/PanasonicAutoFocusControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/operation/takepicture/PanasonicAutoFocusControl.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/operation/takepicture/SingleShotControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/operation/takepicture/SingleShotControl.kt with 90% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/status/CameraEventObserver.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/status/CameraEventObserver.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/status/CameraStatusConvert.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/status/CameraStatusConvert.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/status/CameraStatusHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/status/CameraStatusHolder.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/status/CameraStatusListHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/status/CameraStatusListHolder.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/status/ICameraEventObserver.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/status/ICameraEventObserver.kt with 54% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/wrapper/PanasonicCameraControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/wrapper/PanasonicCameraControl.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/wrapper/PanasonicCameraDeviceProvider.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/wrapper/PanasonicCameraDeviceProvider.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/wrapper/PanasonicCardSlotSelector.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/wrapper/PanasonicCardSlotSelector.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/IPixproInternalInterfaces.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/PixproCameraControl.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/CameraPowerOffPixpro.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/FocusControl.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/SingleShotControl.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/ZoomControl.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/IPixproCamera.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/PixproCamera.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/IPixproCommandPublisher.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/IPixproCommunication.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/PixproCommandCommunicator.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/IPixproCommandCallback.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/IPixproCommand.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/IPixproMessages.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandBase.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandOnlyCallback.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandReceiveOnly.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence01.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence02.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence03.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence04.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence05.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence06.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence07.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence08.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence09.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence10.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence11.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteFocus.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteShutter.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteZoom.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashAuto.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashOff.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashOn.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproCameraConnectSequence.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproCameraDisconnectSequence.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproConnection.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproConnectionClient.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/liveview/PixproLiveViewControl.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/status/PixproStatusChecker.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/status/PixproStatusHolder.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/RicohPentaxCameraControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/RicohPentaxCameraControl.kt with 92% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/connection/IUseGR2CommandNotify.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/connection/IUseGR2CommandNotify.kt with 59% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/connection/RicohGr2CameraConnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/connection/RicohGr2CameraConnectSequence.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/connection/RicohGr2CameraDisconnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/connection/RicohGr2CameraDisconnectSequence.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/connection/RicohGr2Connection.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/connection/RicohGr2Connection.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/liveview/RicohGr2LiveViewControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/liveview/RicohGr2LiveViewControl.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/IRicohGr2ButtonControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/IRicohGr2ButtonControl.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/IRicohGr2CameraStatus.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/IRicohGr2CameraStatus.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/RicohGr2CameraButtonControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/RicohGr2CameraButtonControl.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/RicohGr2CameraCaptureControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/RicohGr2CameraCaptureControl.kt with 83% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/RicohGr2CameraFocusControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/RicohGr2CameraFocusControl.kt with 89% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/RicohGr2CameraPowerOff.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/RicohGr2CameraPowerOff.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/RicohGr2CameraZoomLensControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/RicohGr2CameraZoomLensControl.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/RicohGr2HardwareStatus.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/RicohGr2HardwareStatus.kt with 89% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/takepicture/RicohGr2AutoFocusControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/takepicture/RicohGr2AutoFocusControl.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/takepicture/RicohGr2MovieShotControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/takepicture/RicohGr2MovieShotControl.kt with 94% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/operation/takepicture/RicohGr2SingleShotControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/operation/takepicture/RicohGr2SingleShotControl.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/status/RicohGr2StatusChecker.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/status/RicohGr2StatusChecker.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/status/RicohGr2StatusHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/status/RicohGr2StatusHolder.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/wrapper/RicohGr2RunMode.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/wrapper/RicohGr2RunMode.kt with 88% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/wrapper/playback/CameraFileInfo.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/wrapper/playback/CameraFileInfo.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/wrapper/playback/ProgressEvent.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/wrapper/playback/ProgressEvent.kt with 85% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/wrapper/playback/RicohGr2PlaybackControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/wrapper/playback/RicohGr2PlaybackControl.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/SonyCameraControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/SonyCameraControl.kt with 91% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/liveview/SonyLiveViewControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/liveview/SonyLiveViewControl.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/CameraPowerOffSony.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/operation/CameraPowerOffSony.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/SonyCameraCaptureControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/operation/SonyCameraCaptureControl.kt with 79% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/SonyCameraFocusControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/operation/SonyCameraFocusControl.kt with 89% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/SonyCameraZoomLensControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/operation/SonyCameraZoomLensControl.kt with 94% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/takepicture/AutoFocusControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/operation/takepicture/AutoFocusControl.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/takepicture/SingleShotControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/operation/takepicture/SingleShotControl.kt with 91% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/ISonyApiService.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/ISonyApiService.kt with 58% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/ISonyCamera.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/ISonyCamera.kt with 77% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/ISonyCameraApi.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/ISonyCameraApi.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/ISonyCameraHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/ISonyCameraHolder.kt with 68% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/SonyApiService.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/SonyApiService.kt with 79% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/SonyCameraApi.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/SonyCameraApi.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/SonyCameraDeviceProvider.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/SonyCameraDeviceProvider.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/connection/SonyCameraConnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/connection/SonyCameraConnectSequence.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/connection/SonyCameraConnection.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/connection/SonyCameraConnection.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/connection/SonyCameraDisconnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/connection/SonyCameraDisconnectSequence.kt with 83% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/connection/SonySsdpClient.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/connection/SonySsdpClient.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/eventlistener/ISonyCameraEventObserver.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/ISonyCameraEventObserver.kt with 83% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/eventlistener/ISonyStatusReceiver.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/ISonyStatusReceiver.kt with 56% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/eventlistener/ReplyJsonParser.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/ReplyJsonParser.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/eventlistener/SonyCameraEventObserver.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyCameraEventObserver.kt with 97% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/eventlistener/SonyStatus.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatus.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/wrapper/eventlistener/SonyStatusCandidates.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatusCandidates.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/ThetaCameraControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/ThetaCameraControl.kt with 92% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/connection/ThetaCameraConnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/connection/ThetaCameraConnectSequence.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/connection/ThetaCameraConnection.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/connection/ThetaCameraConnection.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/connection/ThetaCameraDisconnectSequence.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/connection/ThetaCameraDisconnectSequence.kt with 79% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/liveview/ThetaLiveViewControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/liveview/ThetaLiveViewControl.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/operation/IOperationCallback.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/operation/IOperationCallback.kt with 57% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/operation/ThetaMovieRecordingControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/operation/ThetaMovieRecordingControl.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/operation/ThetaOptionGetControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/operation/ThetaOptionGetControl.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/operation/ThetaOptionSetControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/operation/ThetaOptionSetControl.kt with 93% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/operation/ThetaSingleShotControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/operation/ThetaSingleShotControl.kt with 95% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/ICaptureModeReceiver.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/ICaptureModeReceiver.kt with 56% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/IThetaSessionIdNotifier.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/IThetaSessionIdNotifier.kt with 56% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/IThetaSessionIdProvider.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/IThetaSessionIdProvider.kt with 50% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/IThetaStatusHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/IThetaStatusHolder.kt with 64% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/ThetaCameraStatusListHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/ThetaCameraStatusListHolder.kt with 98% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/ThetaCameraStatusWatcher.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/ThetaCameraStatusWatcher.kt with 99% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/status/ThetaSessionHolder.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/ThetaSessionHolder.kt with 89% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/constants/ICameraConstantConvert.kt
app/src/main/java/jp/osdn/gokigen/mangle/scene/CameraProvider.kt
app/src/main/java/jp/osdn/gokigen/mangle/scene/SceneChanger.kt
app/src/main/res/values-ja/strings.xml
app/src/main/res/values/strings.xml

index 3cc336b..88ea3aa 100644 (file)
@@ -1,22 +1,6 @@
 <component name="ProjectCodeStyleConfiguration">
   <code_scheme name="Project" version="173">
     <JetCodeStyleSettings>
-      <option name="PACKAGES_TO_USE_STAR_IMPORTS">
-        <value>
-          <package name="java.util" alias="false" withSubpackages="false" />
-          <package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
-          <package name="io.ktor" alias="false" withSubpackages="true" />
-        </value>
-      </option>
-      <option name="PACKAGES_IMPORT_LAYOUT">
-        <value>
-          <package name="" alias="false" withSubpackages="true" />
-          <package name="java" alias="false" withSubpackages="true" />
-          <package name="javax" alias="false" withSubpackages="true" />
-          <package name="kotlin" alias="false" withSubpackages="true" />
-          <package name="" alias="true" withSubpackages="true" />
-        </value>
-      </option>
       <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
     </JetCodeStyleSettings>
     <codeStyleSettings language="XML">
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644 (file)
index 6a7b0e7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="deploymentTargetDropDown">
-    <runningDeviceTargetSelectedWithDropDown>
-      <Target>
-        <type value="RUNNING_DEVICE_TARGET" />
-        <deviceKey>
-          <Key>
-            <type value="SERIAL_NUMBER" />
-            <value value="AHG771417877" />
-          </Key>
-        </deviceKey>
-      </Target>
-    </runningDeviceTargetSelectedWithDropDown>
-    <timeTargetWasSelectedWithDropDown value="2021-08-20T14:49:24.748404700Z" />
-  </component>
-</project>
\ No newline at end of file
index 3e9f4b7..fa7658b 100644 (file)
@@ -7,6 +7,7 @@
       <w>liveview</w>
       <w>mpget</w>
       <w>mpset</w>
+      <w>pixpro</w>
       <w>ricoh</w>
     </words>
   </dictionary>
index f9056c6..fffc908 100644 (file)
@@ -13,7 +13,7 @@ import android.view.View
 import androidx.appcompat.app.AppCompatActivity
 import androidx.core.view.GestureDetectorCompat
 import androidx.core.view.ScaleGestureDetectorCompat
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus.Companion.AE
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus.Companion.APERTURE
@@ -27,7 +27,7 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus.Companion.S
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus.Companion.TAKE_MODE
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus.Companion.TORCH_MODE
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus.Companion.WHITE_BALANCE
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.ICaptureModeReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.ICaptureModeReceiver
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_PREFERENCE_ARRAY_CAMERA_METHOD
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_PREFERENCE_ARRAY_CAMERA_METHOD_VALUE
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConnectionMethods.Companion.PREFERENCE_CAMERA_METHOD_CAMERAX
index 6980d5e..1595096 100644 (file)
@@ -12,9 +12,9 @@ import androidx.activity.result.ActivityResultLauncher
 import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
 import androidx.appcompat.app.AppCompatActivity
 import androidx.exifinterface.media.ExifInterface
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.ICaptureModeReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.ICaptureModeReceiver
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
@@ -1,8 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera
+package jp.osdn.gokigen.gokigenassets.camera.preference
 
 import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 
-class CameraPreference(private val id : Int, private val wrapper : PreferenceAccessWrapper, method0 : String, private val isReadonly : Boolean = false, sequence0 : String = "0", option1_ : String = "", option2_ : String = "", option3_ : String = "", option4_ : String = "", option5_ : String = "", private val keySet : CameraPreferenceKeySet? = null) : ICameraPreferenceProvider, ICameraPreferenceUpdater
+class CameraPreference(private val id : Int, private val wrapper : PreferenceAccessWrapper, method0 : String, private val isReadonly : Boolean = false, sequence0 : String = "0", option1_ : String = "", option2_ : String = "", option3_ : String = "", option4_ : String = "", option5_ : String = "", private val keySet : CameraPreferenceKeySet? = null) : ICameraPreferenceProvider,
+    ICameraPreferenceUpdater
 {
     private var method = method0
     private var sequence = sequence0
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera
+package jp.osdn.gokigen.gokigenassets.camera.preference
 
 class CameraPreferenceKeySet(private val key1 : String, private val key2 : String, private val key3 : String, private val key4 : String, private val key5 : String)
 {
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.camerax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.operation
 
 import android.annotation.SuppressLint
 import android.hardware.camera2.CameraMetadata
@@ -16,7 +16,7 @@ import androidx.camera.core.ImageAnalysis
 import androidx.camera.core.Preview
 import androidx.camera.lifecycle.ProcessCameraProvider
 import androidx.core.content.ContextCompat
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_CAMERA_X_PREVIEW_LAYOUT
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.camerax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.operation
 
 import android.annotation.SuppressLint
 import android.graphics.PointF
@@ -15,7 +15,6 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingModeNotify
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
-import kotlin.math.exp
 
 class CameraXCameraControl : IFocusingControl, IDisplayInjector
 {
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.connection
 
 import android.util.Log
 import androidx.appcompat.app.AppCompatActivity
@@ -6,8 +6,8 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnection
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCameraHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCameraHolder
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_CAMERA_DETECTED
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_START
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.connection
 
 import android.content.*
 import android.net.ConnectivityManager
@@ -12,7 +12,7 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus.C
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCameraHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCameraHolder
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
 import java.util.concurrent.Executor
 import java.util.concurrent.Executors
@@ -1,10 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.connection
 
 import android.content.Context
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.wrapper.PanasonicCameraDeviceProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.wrapper.PanasonicCameraDeviceProvider
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CAMERA_NOT_FOUND
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_CAMERA_FOUND
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_CAMERA_RECEIVED_REPLY
@@ -17,7 +17,6 @@ import java.net.DatagramPacket
 import java.net.DatagramSocket
 import java.net.InetSocketAddress
 import java.nio.charset.Charset
-import java.util.*
 import kotlin.collections.ArrayList
 
 
@@ -1,11 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.liveview
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.liveview
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.status.ICameraEventObserver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status.ICameraEventObserver
 import jp.osdn.gokigen.gokigenassets.liveview.image.CameraLiveViewListenerImpl
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
-import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLogDumper
 import java.net.DatagramPacket
 import java.net.DatagramSocket
 import java.util.*
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICaptureControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.takepicture.SingleShotControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.takepicture.SingleShotControl
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 
@@ -1,10 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation
 
 import android.util.Log
 import android.view.MotionEvent
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.takepicture.PanasonicAutoFocusControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.takepicture.PanasonicAutoFocusControl
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 
@@ -1,8 +1,8 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IZoomLensControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
 class PanasonicCameraZoomLensControl : IZoomLensControl
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.takepicture
 
 import android.graphics.PointF
 import android.graphics.RectF
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay.FocusFrameStatus
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.takepicture
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status
 
 import android.content.Context
 import android.util.Log
@@ -7,7 +7,7 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusUpdateNotify
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusWatcher
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICardSlotSelector
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.liveview.message.IMessageDrawer
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status
 
 import android.graphics.Color
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLogDumper
 import java.util.ArrayList
 import kotlin.math.pow
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status
 
 import android.content.Context
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
 class CameraStatusHolder(private val context: Context, private val remote: IPanasonicCamera, private val cardSlotSelector: ICardSlotSelector) : ICardSlotSelectionReceiver,
@@ -1,8 +1,8 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import java.util.ArrayList
 
@@ -1,20 +1,20 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.wrapper
 
 import android.util.Log
 import android.view.KeyEvent
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCameraHolder
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.connection.PanasonicCameraConnection
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.liveview.PanasonicLiveViewControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.PanasonicCameraCaptureControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.PanasonicCameraFocusControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.operation.PanasonicCameraZoomLensControl
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.status.CameraEventObserver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCameraHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.connection.PanasonicCameraConnection
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.liveview.PanasonicLiveViewControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.PanasonicCameraCaptureControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.PanasonicCameraFocusControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.PanasonicCameraZoomLensControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status.CameraEventObserver
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
@@ -1,8 +1,8 @@
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.wrapper
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicApiService
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicApiService
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import jp.osdn.gokigen.gokigenassets.utils.communication.XmlElement
 import java.util.*
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/IPixproInternalInterfaces.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/IPixproInternalInterfaces.kt
new file mode 100644 (file)
index 0000000..7565b34
--- /dev/null
@@ -0,0 +1,13 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommandPublisher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommunication
+import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
+
+interface IPixproInternalInterfaces
+{
+    fun getIPixproCommunication() : IPixproCommunication
+    fun getIPixproCommandPublisher() : IPixproCommandPublisher
+    fun getInformationReceiver() : IInformationReceiver
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/PixproCameraControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/PixproCameraControl.kt
new file mode 100644 (file)
index 0000000..dbbb227
--- /dev/null
@@ -0,0 +1,77 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro
+
+import android.graphics.Color
+import android.view.KeyEvent
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.PixproCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommandPublisher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommunication
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.PixproCommandCommunicator
+import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
+import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
+import jp.osdn.gokigen.gokigenassets.liveview.ILiveViewRefresher
+import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
+import jp.osdn.gokigen.gokigenassets.scene.IVibrator
+
+
+class PixproCameraControl(private val context: AppCompatActivity, private val vibrator: IVibrator, private val informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver) : ICameraControl, View.OnClickListener, View.OnLongClickListener, IKeyDown, ICameraStatus, IPixproInternalInterfaces, PixproCommandCommunicator.ICommunicationNotify
+{
+    private val pixproCameraParameter = PixproCamera()
+    private val commandCommunicator = PixproCommandCommunicator(pixproCameraParameter, this)
+
+    companion object
+    {
+        private val TAG = PixproCameraControl::class.java.simpleName
+    }
+
+    override fun getConnectionMethod(): String { return ("PIXPRO") }
+    override fun initialize() { }
+    override fun connectToCamera() { }
+    override fun startCamera(isPreviewView: Boolean, cameraSequence : Int) { }
+    override fun finishCamera() { }
+    override fun changeCaptureMode(mode: String) { }
+    override fun needRotateImage(): Boolean { return (false) }
+    override fun setRefresher(id : Int, refresher: ILiveViewRefresher, imageView: ILiveView, cachePosition : ICachePositionProvider) { }
+    override fun captureButtonReceiver(id: Int): View.OnClickListener { return (this) }
+    override fun onLongClickReceiver(id: Int): View.OnLongClickListener { return (this) }
+    override fun keyDownReceiver(id: Int): IKeyDown { return (this) }
+    override fun getFocusingControl(id: Int): IFocusingControl? { return (null) }
+    override fun getDisplayInjector(): IDisplayInjector? { return (null) }
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+    override fun getCameraStatus(): ICameraStatus { return (this) }
+
+    override fun onClick(v: View?) { }
+    override fun handleKeyDown(keyCode: Int, event: KeyEvent): Boolean { return (false) }
+    override fun onLongClick(v: View?): Boolean { return (false) }
+
+    override fun getStatusList(key: String): List<String?> { return (ArrayList<String>()) }
+    override fun getStatus(key: String): String { return ("") }
+    override fun getStatusColor(key: String): Int { return (Color.WHITE) }
+    override fun setStatus(key: String, value: String) { }
+
+
+    override fun getIPixproCommunication(): IPixproCommunication { return (commandCommunicator) }
+    override fun getIPixproCommandPublisher(): IPixproCommandPublisher { return (commandCommunicator) }
+    override fun getInformationReceiver(): IInformationReceiver { return (informationNotify) }
+
+    override fun detectDisconnect()
+    {
+
+/*
+    private fun detectDisconnect()
+    {
+        val connection: ICameraConnection = interfaceProvider.getCameraConnection()
+        if (connection != null)
+        {
+            // 回線状態を「切断」にしてダイアログを表示する
+            connection.forceUpdateConnectionStatus(ICameraConnection.CameraConnectionStatus.DISCONNECTED)
+            connection.alertConnectingFailed(interfaceProvider.getStringFromResource(R.string.kodak_command_line_disconnected))
+        }
+    }
+ */
+        //TODO("Not yet implemented")
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/CameraPowerOffPixpro.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/CameraPowerOffPixpro.kt
new file mode 100644 (file)
index 0000000..4a85eef
--- /dev/null
@@ -0,0 +1,60 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.operation
+
+import android.content.Context
+import androidx.preference.Preference
+import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert
+import jp.osdn.gokigen.gokigenassets.scene.IChangeSceneBasic
+import jp.osdn.gokigen.gokigenassets.utils.ConfirmationDialog
+
+class CameraPowerOffPixpro(private val context: Context, private val changeScene: IChangeSceneBasic) : Preference.OnPreferenceClickListener, ConfirmationDialog.ConfirmationCallback
+{
+    private var preferenceKey: String? = null
+
+    /**
+     * クラスの準備
+     *
+     */
+    fun prepare()
+    {
+        // 何もしない
+    }
+
+    /**
+     *
+     *
+     * @param preference クリックしたpreference
+     * @return false : ハンドルしない / true : ハンドルした
+     */
+    override fun onPreferenceClick(preference: Preference): Boolean
+    {
+        if (!preference.hasKey())
+        {
+            return false
+        }
+        preferenceKey = preference.key
+        val isContain = preferenceKey?.contains(IApplicationConstantConvert.ID_PREFERENCE_LABEL_EXIT_APPLICATION)
+        if ((isContain != null)&&(isContain))
+        {
+
+            // 確認ダイアログの生成と表示
+            val dialog: ConfirmationDialog = ConfirmationDialog.newInstance(context)
+            dialog.show(IApplicationConstantConvert.ID_DIALOG_TITLE_CONFIRMATION, IApplicationConstantConvert.ID_DIALOG_EXIT_POWER_OFF, this)
+            return true
+        }
+        return false
+    }
+
+    /**
+     *
+     *
+     */
+    override fun confirm()
+    {
+        val isContain = preferenceKey?.contains(IApplicationConstantConvert.ID_PREFERENCE_LABEL_EXIT_APPLICATION)
+        if ((isContain != null)&&(isContain))
+        {
+            // カメラの電源をOFFにしたうえで、アプリケーションを終了する。
+            changeScene.exitApplication()
+        }
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/FocusControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/FocusControl.kt
new file mode 100644 (file)
index 0000000..07819bd
--- /dev/null
@@ -0,0 +1,128 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.operation
+
+import android.graphics.PointF
+import android.util.Log
+import android.view.MotionEvent
+import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommandPublisher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific.PixproExecuteFocus
+import java.lang.Exception
+
+class FocusControl(private val commandPublisher: IPixproCommandPublisher, private val frameDisplayer: IAutoFocusFrameDisplay?) : IFocusingControl, IPixproCommandCallback
+{
+    companion object
+    {
+        private val TAG = FocusControl::class.java.simpleName
+    }
+
+    override fun driveAutoFocus(motionEvent: MotionEvent?): Boolean
+    {
+        if ((motionEvent == null)||(motionEvent.action != MotionEvent.ACTION_DOWN))
+        {
+            return (false)
+        }
+        Log.v(TAG, "driveAutoFocus()")
+        val thread = Thread {
+            try
+            {
+                val point = frameDisplayer?.getPointWithEvent(motionEvent)
+                if (point != null)
+                {
+                    // preFocusFrameRect = getPreFocusFrameRect(point);
+                    // showFocusFrame(preFocusFrameRect, IAutoFocusFrameDisplay.FocusFrameStatus.Running, 1.0);
+                    if (frameDisplayer?.isContainsPoint(point) == true)
+                    {
+                        lockAutoFocus(point)
+                    }
+                }
+            }
+            catch (e: Exception)
+            {
+                e.printStackTrace()
+            }
+        }
+        try
+        {
+            thread.start()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return (false)
+    }
+
+    override fun unlockAutoFocus()
+    {
+        try
+        {
+            Log.v(TAG, " Unlock AF ")
+            //commandPublisher.enqueueCommand(new PtpIpCommandGeneric(this, FOCUS_UNLOCK, isDumpLog, 0, 0x9206));
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    override fun halfPressShutter(isPressed: Boolean)
+    {
+        //unlockAutoFocus();
+        //commandPublisher.enqueueCommand(new PtpIpCommandGeneric(this, FOCUS_MOVE, isDumpLog, 0, 0x90c1));
+        lockAutoFocus(PointF(0.5f, 0.5f))
+    }
+
+    private fun lockAutoFocus(point: PointF) {
+        val maxPointLimitWidth = 1000000.0f
+        val maxPointLimitHeight = 1000000.0f
+        try {
+            val x = 0x00ffffff and Math.round(point.x * maxPointLimitWidth) + 1
+            val y = 0x00ffffff and Math.round(point.y * maxPointLimitHeight) + 1
+            Log.v(TAG, "Lock AF: [$x,$y]")
+            commandPublisher.enqueueCommand(PixproExecuteFocus(this, x, y))
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+/*
+    private RectF getPreFocusFrameRect(@NonNull PointF point)
+    {
+        float imageWidth =  frameDisplayer.getContentSizeWidth();
+        float imageHeight =  frameDisplayer.getContentSizeHeight();
+
+        // Display a provisional focus frame at the touched point.
+        float focusWidth = 0.125f;  // 0.125 is rough estimate.
+        float focusHeight = 0.125f;
+        if (imageWidth > imageHeight)
+        {
+            focusHeight *= (imageWidth / imageHeight);
+        }
+        else
+        {
+            focusHeight *= (imageHeight / imageWidth);
+        }
+        return (new RectF(point.x - focusWidth / 2.0f, point.y - focusHeight / 2.0f,
+                point.x + focusWidth / 2.0f, point.y + focusHeight / 2.0f));
+    }
+
+    private void showFocusFrame(RectF rect, IAutoFocusFrameDisplay.FocusFrameStatus status, double duration)
+    {
+        frameDisplayer.showFocusFrame(rect, status, duration);
+        indicator.onAfLockUpdate(IAutoFocusFrameDisplay.FocusFrameStatus.Focused == status);
+    }
+
+    private void hideFocusFrame()
+    {
+        frameDisplayer.hideFocusFrame();
+        indicator.onAfLockUpdate(false);
+    }
+*/
+    override fun receivedMessage(id: Int, rx_body: ByteArray?)
+    {
+        Log.v(TAG, " KodakFocusingControl::receivedMessage() : $id ")
+    }
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/SingleShotControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/SingleShotControl.kt
new file mode 100644 (file)
index 0000000..21bb4a0
--- /dev/null
@@ -0,0 +1,55 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.operation
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICaptureControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommandPublisher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific.PixproExecuteShutter
+import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
+
+class SingleShotControl(private val commandPublisher: IPixproCommandPublisher, frameDisplayer: IAutoFocusFrameDisplay?) : ICaptureControl, IPixproCommandCallback
+{
+    override fun doCapture(kind: Int)
+    {
+        try
+        {
+            // シャッター
+            Log.v(TAG, " doCapture() ")
+
+            // シャッターを切る
+            commandPublisher.enqueueCommand(PixproExecuteShutter(this))
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    override fun receivedMessage(id: Int, rx_body: ByteArray?)
+    {
+        Log.v(TAG, " KodakCaptureControl::receivedMessage() : ")
+/*
+        try
+        {
+            int responseCode = (rx_body[8] & 0xff) + ((rx_body[9] & 0xff) * 256);
+            if ((rx_body.length > 10) && (responseCode != 0x2001))
+            {
+                Log.v(TAG, String.format(" RECEIVED NG REPLY ID : %d, RESPONSE CODE : 0x%04x ", id, responseCode));
+            }
+            else
+            {
+                Log.v(TAG, String.format(" OK REPLY (ID : %d) ", id));
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+*/
+    }
+
+    companion object
+    {
+        private val TAG = SingleShotControl::class.java.simpleName
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/ZoomControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/operation/ZoomControl.kt
new file mode 100644 (file)
index 0000000..8d62a7c
--- /dev/null
@@ -0,0 +1,42 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.operation
+
+import android.util.Log
+
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.IZoomLensControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommandPublisher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific.PixproExecuteZoom
+import java.lang.Exception
+
+class ZoomControl(private val commandPublisher: IPixproCommandPublisher) : IZoomLensControl, IPixproCommandCallback
+{
+    override fun canZoom(): Boolean { return true }
+    override fun updateStatus() { }
+    override fun getMaximumFocalLength(): Float { return 0.0f }
+    override fun getMinimumFocalLength(): Float { return 0.0f }
+    override fun getCurrentFocalLength(): Float { return 0.0f }
+    override fun driveZoomLens(targetLength: Float) { }
+    override fun driveZoomLens(isZoomIn: Boolean)
+    {
+        try
+        {
+            Log.v(TAG, " Zoom in : $isZoomIn")
+            commandPublisher.enqueueCommand(PixproExecuteZoom(this, if (isZoomIn) 1 else -1))
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+    override fun moveInitialZoomPosition() { }
+    override fun isDrivingZoomLens(): Boolean { return false }
+    override fun receivedMessage(id: Int, rx_body: ByteArray?)
+    {
+        Log.v(TAG, " KodakFocusingControl::receivedMessage() : ")
+    }
+
+    companion object
+    {
+        private val TAG = ZoomControl::class.java.simpleName
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/IPixproCamera.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/IPixproCamera.kt
new file mode 100644 (file)
index 0000000..8f9ab8c
--- /dev/null
@@ -0,0 +1,11 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper
+
+interface IPixproCamera
+{
+    fun isAvailable() : Boolean
+    fun getIpAddress() : String
+    fun getPortNumber() : Int
+    fun getLiveViewPortNumber() : Int
+    fun getTcpNoDelay() : Boolean
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/PixproCamera.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/PixproCamera.kt
new file mode 100644 (file)
index 0000000..6f538f1
--- /dev/null
@@ -0,0 +1,78 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper
+
+import android.util.Log
+
+class PixproCamera : IPixproCamera
+{
+    private lateinit var ipAddress: String
+    private var portNumber = -1
+    private var liveViewPort = -1
+    private var tcpNoDelay = false
+    private var isAvailable = false
+
+    companion object
+    {
+        private val TAG = PixproCamera::class.java.simpleName
+    }
+
+    fun setCommunicationParameter(ip: String, port: Int, lvPort: Int, tcpDelay: Boolean)
+    {
+        Log.v(TAG, "setCommunicationParameter($ip, $port, $lvPort, $tcpDelay)")
+        this.ipAddress = ip
+        this.portNumber = port
+        this.liveViewPort = lvPort
+        this.tcpNoDelay = tcpDelay
+        isAvailable = true
+    }
+
+    fun parseCommunicationParameter(data: ByteArray)
+    {
+        //  AOFREPLY:DC163,1,PIXPRO WPZ2,172.16.0.254,255.255.255.0,(mac address),9176,9175,0,(WIFI SSID),0
+        try
+        {
+            isAvailable = true
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+            isAvailable = false
+        }
+    }
+
+    override fun isAvailable(): Boolean
+    {
+        return (isAvailable)
+    }
+
+    override fun getIpAddress(): String
+    {
+        if (::ipAddress.isInitialized)
+        {
+            return (ipAddress)
+        }
+        return ("172.16.0.254")
+    }
+
+    override fun getPortNumber(): Int
+    {
+        if (portNumber > 0)
+        {
+            return (portNumber)
+        }
+        return (9175)
+    }
+
+    override fun getLiveViewPortNumber(): Int
+    {
+        if (liveViewPort > 0)
+        {
+            return (liveViewPort)
+        }
+        return (9176)
+    }
+
+    override fun getTcpNoDelay(): Boolean
+    {
+        return (tcpNoDelay)
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/IPixproCommandPublisher.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/IPixproCommandPublisher.kt
new file mode 100644 (file)
index 0000000..9e28d08
--- /dev/null
@@ -0,0 +1,12 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproCommand
+
+interface IPixproCommandPublisher
+{
+    fun isConnected(): Boolean
+    fun enqueueCommand(command: IPixproCommand): Boolean
+
+    fun start()
+    fun stop()
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/IPixproCommunication.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/IPixproCommunication.kt
new file mode 100644 (file)
index 0000000..8779fb9
--- /dev/null
@@ -0,0 +1,7 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command
+
+interface IPixproCommunication
+{
+    fun connect(): Boolean
+    fun disconnect()
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/PixproCommandCommunicator.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/PixproCommandCommunicator.kt
new file mode 100644 (file)
index 0000000..80569f2
--- /dev/null
@@ -0,0 +1,767 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.IPixproCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproCommand
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_RECEIVE_ONLY
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandOnlyCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandReceiveOnly
+import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLogDumper
+import java.io.BufferedReader
+import java.io.ByteArrayOutputStream
+import java.io.DataOutputStream
+import java.io.InputStream
+import java.net.InetSocketAddress
+import java.net.Socket
+import java.net.SocketException
+import java.util.*
+
+class PixproCommandCommunicator(private val pixproCamera: IPixproCamera, private val notifier: ICommunicationNotify) : IPixproCommandPublisher, IPixproCommunication
+{
+    private var isStart = false
+    private var isConnected = false
+    private var waitForever: Boolean = false
+    private val commandQueue : Queue<IPixproCommand> = ArrayDeque()
+
+    private var socket: Socket? = null
+    private var dataOutputStream: DataOutputStream? = null
+    private var bufferedReader: BufferedReader? = null
+
+    init
+    {
+        commandQueue.clear()
+    }
+
+    companion object
+    {
+        private val TAG = PixproCommandCommunicator::class.java.simpleName
+        private const val BUFFER_SIZE = 1024 * 1024 + 16 // 受信バッファは 1MB
+        private const val COMMAND_SEND_RECEIVE_DURATION_MS = 5
+        private const val COMMAND_SEND_RECEIVE_DURATION_MAX = 3000
+        private const val COMMAND_POLL_QUEUE_MS = 5
+    }
+
+    override fun connect(): Boolean
+    {
+        if (!pixproCamera.isAvailable())
+        {
+            Log.v(TAG, " pixpro camera is not ready...")
+            return (false)
+        }
+        try
+        {
+            Log.v(TAG, " connect()")
+            socket = Socket()
+            if (pixproCamera.getTcpNoDelay())
+            {
+                socket?.setKeepAlive(false)
+                socket?.setPerformancePreferences(0, 2, 0)
+                socket?.setOOBInline(true)
+                socket?.setReuseAddress(false)
+                socket?.setTrafficClass(0x80)
+            }
+            socket?.tcpNoDelay = pixproCamera.getTcpNoDelay()
+            socket?.connect(InetSocketAddress(pixproCamera.getIpAddress(), pixproCamera.getPortNumber()), 0)
+            isConnected = true
+            return (true)
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+            socket = null
+        }
+        return (false)
+    }
+
+    private fun closeOutputStream()
+    {
+        try
+        {
+            dataOutputStream?.close()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        dataOutputStream = null
+    }
+
+    private fun closeBufferedReader()
+    {
+        try
+        {
+            bufferedReader?.close()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        bufferedReader = null
+    }
+
+    private fun closeSocket()
+    {
+        try
+        {
+            socket?.close()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        socket = null
+    }
+
+    override fun disconnect()
+    {
+        try
+        {
+            // 通信関連のクローズ
+            closeOutputStream()
+            closeBufferedReader()
+            closeSocket()
+            isStart = false
+            isConnected = false
+            commandQueue.clear()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        System.gc()
+    }
+
+    override fun start()
+    {
+        if (isStart)
+        {
+            // すでにコマンドのスレッド動作中なので抜ける
+            return
+        }
+        isStart = true
+        Log.v(TAG, " start()")
+        val thread = Thread {
+            try
+            {
+                val inputStream = socket?.getInputStream()
+                dataOutputStream = DataOutputStream(socket?.getOutputStream())
+                while (isStart)
+                {
+                    try
+                    {
+                        val command = commandQueue.poll()
+                        if (command != null)
+                        {
+                            issueCommand(command)
+                        }
+                        Thread.sleep(COMMAND_POLL_QUEUE_MS.toLong())
+                        if (inputStream != null && inputStream.available() > 0)
+                        {
+                            Log.v(TAG, " --- RECEIVE MSG --- ")
+                            receiveFromCamera(PixproCommandReceiveOnly(SEQ_RECEIVE_ONLY, PixproCommandOnlyCallback()))
+                        }
+                    }
+                    catch (e: Exception)
+                    {
+                        e.printStackTrace()
+                    }
+                }
+            }
+            catch (e: Exception)
+            {
+                Log.v(TAG, "<<<<< IP : ${pixproCamera.getIpAddress()} port : ${pixproCamera.getPortNumber()} >>>>>")
+                e.printStackTrace()
+            }
+        }
+        try {
+            thread.start()
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+    override fun stop()
+    {
+        isStart = false
+        commandQueue.clear()
+    }
+
+    override fun isConnected(): Boolean
+    {
+        return (isConnected)
+    }
+
+    override fun enqueueCommand(command: IPixproCommand): Boolean
+    {
+        try
+        {
+            //Log.v(TAG, "Enqueue : "  + command.getId());
+            return commandQueue.offer(command)
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return false
+    }
+
+    private fun issueCommand(command: IPixproCommand)
+    {
+        try
+        {
+            var retryOver = true
+            while (retryOver)
+            {
+                //Log.v(TAG, "issueCommand : " + command.getId());
+                val commandBody: ByteArray = command.commandBody()
+                // コマンドボディが入っていた場合には、コマンド送信(入っていない場合は受信待ち)
+                sendToCamera(command.dumpLog(), commandBody)
+
+                val commandBody2: ByteArray? = command.commandBody2()
+                if (commandBody2 != null)
+                {
+                    // コマンドボディの2つめが入っていた場合には、コマンドを連続送信する
+                    sendToCamera(command.dumpLog(), commandBody2)
+                }
+                retryOver = receiveFromCamera(command)
+                if (retryOver)
+                {
+                    retryOver = command.sendRetry()
+                }
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    /**
+     * カメラにコマンドを送信する(メイン部分)
+     *
+     */
+    private fun sendToCamera(isDumpReceiveLog: Boolean, byte_array: ByteArray)
+    {
+        try
+        {
+            if (dataOutputStream == null)
+            {
+                Log.v(TAG, " DataOutputStream is null.")
+                return
+            }
+            if (byte_array.isEmpty())
+            {
+                // メッセージボディがない。終了する
+                Log.v(TAG, " SEND BODY IS NOTHING.")
+                return
+            }
+            if (isDumpReceiveLog)
+            {
+                // ログに送信メッセージを出力する
+                SimpleLogDumper.dumpBytes("SEND[" + byte_array.size + "] ", byte_array)
+            }
+
+            // (データを)送信
+            dataOutputStream?.write(byte_array)
+            dataOutputStream?.flush()
+        }
+        catch (socketException: SocketException)
+        {
+            socketException.printStackTrace()
+            try
+            {
+                // 回線切断を通知する
+                notifier.detectDisconnect()
+            }
+            catch (ee: Exception)
+            {
+                ee.printStackTrace()
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    private fun sleep(delayMs: Int)
+    {
+        try
+        {
+            Thread.sleep(delayMs.toLong())
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    /**
+     * カメラからにコマンドの結果を受信する(メイン部分)
+     *
+     */
+    private fun receiveFromCamera(command: IPixproCommand): Boolean
+    {
+        var delayMs: Int = command.receiveDelayMs()
+        if (delayMs < 0 || delayMs > COMMAND_SEND_RECEIVE_DURATION_MAX)
+        {
+            delayMs = COMMAND_SEND_RECEIVE_DURATION_MS
+        }
+        return receiveSingle(command, delayMs)
+    }
+
+    private fun receiveSingle(command: IPixproCommand, delayMs: Int): Boolean
+    {
+        val isDumpReceiveLog: Boolean = command.dumpLog()
+        val id: Int = command.getId()
+        val callback: IPixproCommandCallback? = command.responseCallback()
+        try
+        {
+            val receiveMessageBufferSize = BUFFER_SIZE
+            val byteArray = ByteArray(receiveMessageBufferSize)
+            val inputStream: InputStream? = socket?.getInputStream()
+            if (inputStream == null)
+            {
+                Log.v(TAG, " InputStream is NULL... RECEIVE ABORTED.")
+                receivedAllMessage(isDumpReceiveLog, id, null, callback)
+                return (false)
+            }
+
+            // 初回データが受信バッファにデータが溜まるまで待つ...
+            var readBytes = waitForReceive(inputStream, delayMs, command.maxRetryCount())
+            if (readBytes < 0)
+            {
+                // リトライオーバー検出
+                Log.v(TAG, "  ----- DETECT RECEIVE RETRY OVER... -----")
+                return (true)
+            }
+
+            // 受信したデータをバッファに突っ込む
+            val byteStream = ByteArrayOutputStream()
+            while (readBytes > 0)
+            {
+                readBytes = inputStream.read(byteArray, 0, receiveMessageBufferSize)
+                if (readBytes <= 0)
+                {
+                    Log.v(TAG," RECEIVED MESSAGE FINISHED ($readBytes)")
+                    break
+                }
+                byteStream.write(byteArray, 0, readBytes)
+                sleep(delayMs)
+                readBytes = inputStream.available()
+            }
+            receivedAllMessage(isDumpReceiveLog, id, byteStream.toByteArray(), callback)
+            System.gc()
+        }
+        catch (e: Throwable)
+        {
+            e.printStackTrace()
+            System.gc()
+        }
+        return (false)
+    }
+
+    private fun receivedAllMessage(isDumpReceiveLog: Boolean, id: Int, body: ByteArray?, callback: IPixproCommandCallback?)
+    {
+        Log.v(TAG, " receivedAllMessage() : " + (body?.size ?: 0) + " bytes.")
+        if (isDumpReceiveLog && body != null)
+        {
+            // ログに受信メッセージを出力する
+            SimpleLogDumper.dumpBytes("RECV[" + body.size + "] ", body)
+        }
+        if (checkReceiveStatusMessage(body))
+        {
+            sendSecondaryMessage(isDumpReceiveLog, body)
+        }
+        callback?.receivedMessage(id, body)
+    }
+
+    private fun sendSecondaryMessage(isDumpReceiveLog: Boolean, received_body: ByteArray?)
+    {
+        if (received_body == null)
+        {
+            Log.v(TAG, " send_secondary_message : NULL ")
+            return
+        }
+        Log.v(TAG, " sendSecondaryMessage : [" + received_body[8] + "] [" + received_body[9] + "] ")
+        try
+        {
+            var messageToSend: ByteArray? = null
+            if (received_body[8] == 0xd2.toByte() && received_body[9] == 0xd7.toByte())
+            {
+                messageToSend = byteArrayOf(
+                    0x2e.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xd2.toByte(),
+                    0x07.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x10.toByte(),
+                    0x00.toByte(),
+                    0x80.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+                )
+            }
+            if (received_body[8] == 0xb9.toByte() && received_body[9] == 0x0b.toByte()) {
+                messageToSend = byteArrayOf(
+                    0x2e.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xb9.toByte(),
+                    0x0b.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x10.toByte(),
+                    0x00.toByte(),
+                    0x80.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+                )
+            }
+            if (received_body[8] == 0xba.toByte() && received_body[9] == 0x0b.toByte()) {
+                messageToSend = byteArrayOf(
+                    0x2e.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xba.toByte(),
+                    0x0b.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x10.toByte(),
+                    0x00.toByte(),
+                    0x80.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+                )
+            }
+            if (received_body[8] == 0xbb.toByte() && received_body[9] == 0x0b.toByte()) {
+                messageToSend = byteArrayOf(
+                    0x2e.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xbb.toByte(),
+                    0x0b.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x01.toByte(),
+                    0x10.toByte(),
+                    0x00.toByte(),
+                    0x80.toByte(),
+                    0x1f.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x90.toByte(),
+                    0x01.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0x00.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(),
+                    0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+                )
+            }
+            if (isDumpReceiveLog && messageToSend != null)
+            {
+                // ログに受信メッセージを出力する
+                SimpleLogDumper.dumpBytes("SND2[" + messageToSend.size + "] ", messageToSend)
+            }
+            if (dataOutputStream != null && messageToSend != null)
+            {
+                // (データを)送信
+                dataOutputStream?.write(messageToSend)
+                dataOutputStream?.flush()
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    private fun checkReceiveStatusMessage(receive_body: ByteArray?): Boolean
+    {
+        var isReceivedStatusMessage = false
+        try
+        {
+            if (receive_body == null)
+            {
+                return (false)
+            }
+            if (receive_body.size < 16)
+            {
+                Log.v(TAG, " BODY SIZE IS SMALL. : " + receive_body.size)
+                return false
+            }
+            if (receive_body[8] == 0xd2.toByte() && receive_body[9] == 0x07.toByte() ||
+                receive_body[8] == 0xb9.toByte() && receive_body[9] == 0x0b.toByte() ||
+                receive_body[8] == 0xba.toByte() && receive_body[9] == 0x0b.toByte() ||
+                receive_body[8] == 0xbb.toByte() && receive_body[9] == 0x0b.toByte()
+            )
+            {
+                isReceivedStatusMessage = true
+                Log.v(TAG, "  >>> RECEIVED HOST PRIMARY MESSAGE. <<<")
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return (isReceivedStatusMessage)
+    }
+
+    private fun waitForReceive(inputStream: InputStream, delayMs: Int, retry_count: Int): Int
+    {
+        var retryCount = retry_count
+        var isLogOutput = true
+        var readBytes = 0
+        try
+        {
+            while (readBytes <= 0)
+            {
+                // Log.v(TAG, "  --- waitForReceive : " + retry_count + " delay : " + delayMs + "ms");
+                sleep(delayMs)
+                readBytes = inputStream.available()
+                if (readBytes <= 0)
+                {
+                    if (isLogOutput)
+                    {
+                        Log.v(TAG, "  waitForReceive:: is.available() WAIT... : " + delayMs + "ms")
+                        isLogOutput = false
+                    }
+                    retryCount--
+                    if (!waitForever && retry_count < 0)
+                    {
+                        return (-1)
+                    }
+                }
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return (readBytes)
+    }
+
+    interface ICommunicationNotify
+    {
+        fun detectDisconnect()
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/IPixproCommandCallback.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/IPixproCommandCallback.kt
new file mode 100644 (file)
index 0000000..7075d2e
--- /dev/null
@@ -0,0 +1,6 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages
+
+interface IPixproCommandCallback
+{
+    fun receivedMessage(id: Int, rx_body: ByteArray?)
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/IPixproCommand.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/IPixproCommand.kt
new file mode 100644 (file)
index 0000000..83c8aa1
--- /dev/null
@@ -0,0 +1,31 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+
+interface IPixproCommand
+{
+    // メッセージの識別子
+    fun getId(): Int
+
+    // コマンドの受信待ち時間(単位:ms)
+    fun receiveDelayMs(): Int
+
+    // 送信するメッセージボディ
+    fun commandBody(): ByteArray
+
+    // 送信するメッセージボディ(連続送信する場合)
+    fun commandBody2(): ByteArray?
+
+    // 受信待ち再試行回数
+    fun maxRetryCount(): Int
+
+    // コマンドの受信が失敗した場合、再送する(再送する場合は true)
+    fun sendRetry(): Boolean
+
+    // コマンド送信結果(応答)の通知先
+    fun responseCallback(): IPixproCommandCallback?
+
+    // デバッグ用: ログ(logcat)に通信結果を残すかどうか
+    fun dumpLog(): Boolean
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/IPixproMessages.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/IPixproMessages.kt
new file mode 100644 (file)
index 0000000..ed04e4f
--- /dev/null
@@ -0,0 +1,30 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base
+
+interface IPixproMessages
+{
+    companion object
+    {
+        const val  SEQ_DUMMY = 0
+        const val  SEQ_RECEIVE_ONLY = 1
+
+        const val  SEQ_SHUTTER = 10
+        const val  SEQ_FOCUS = 11
+        const val  SEQ_ZOOM = 12
+
+        const val  SEQ_FLASH_OFF = 20
+        const val  SEQ_FLASH_ON = 21
+        const val  SEQ_FLASH_AUTO = 22
+
+        const val  SEQ_CONNECT_01 = 101
+        const val  SEQ_CONNECT_02 = 102
+        const val  SEQ_CONNECT_03 = 103
+        const val  SEQ_CONNECT_04 = 104
+        const val  SEQ_CONNECT_05 = 105
+        const val  SEQ_CONNECT_06 = 106
+        const val  SEQ_CONNECT_07 = 107
+        const val  SEQ_CONNECT_08 = 108
+        const val  SEQ_CONNECT_09 = 109
+        const val  SEQ_CONNECT_10 = 110
+        const val  SEQ_CONNECT_11 = 111
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandBase.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandBase.kt
new file mode 100644 (file)
index 0000000..19ebfaa
--- /dev/null
@@ -0,0 +1,46 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+
+open class PixproCommandBase: IPixproCommand
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_DUMMY)
+    }
+
+    override fun receiveDelayMs(): Int
+    {
+        return 30
+    }
+
+    override fun commandBody(): ByteArray
+    {
+        return ByteArray(0)
+    }
+
+    override fun commandBody2(): ByteArray?
+    {
+        return null
+    }
+
+    override fun maxRetryCount(): Int
+    {
+        return 50
+    }
+
+    override fun sendRetry(): Boolean
+    {
+        return false
+    }
+
+    override fun responseCallback(): IPixproCommandCallback?
+    {
+        return null
+    }
+
+    override fun dumpLog(): Boolean
+    {
+        return false
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandOnlyCallback.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandOnlyCallback.kt
new file mode 100644 (file)
index 0000000..ccdc984
--- /dev/null
@@ -0,0 +1,22 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLogDumper
+
+class PixproCommandOnlyCallback(private val isDumpReceiveMessage: Boolean = false) : IPixproCommandCallback
+{
+    companion object
+    {
+        private val TAG = PixproCommandOnlyCallback::class.java.simpleName
+    }
+    override fun receivedMessage(id: Int, rx_body: ByteArray?)
+    {
+        Log.v(TAG, " RECEIVED MESSAGE : $id (${rx_body?.size} bytes.)")
+        if ((isDumpReceiveMessage)&&(rx_body != null))
+        {
+            // 受信データをログに出力する
+            SimpleLogDumper.dumpBytes("[${rx_body.size}]", rx_body)
+        }
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandReceiveOnly.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/base/PixproCommandReceiveOnly.kt
new file mode 100644 (file)
index 0000000..ce4c368
--- /dev/null
@@ -0,0 +1,22 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+
+
+class PixproCommandReceiveOnly(private val id: Int, private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return (callback)
+    }
+
+    override fun getId(): Int
+    {
+        return (id)
+    }
+
+    override fun dumpLog(): Boolean
+    {
+        return false
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence01.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence01.kt
new file mode 100644 (file)
index 0000000..1a73274
--- /dev/null
@@ -0,0 +1,163 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence01(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_01)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x30.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xe9.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x30.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x02.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence02.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence02.kt
new file mode 100644 (file)
index 0000000..897a2c1
--- /dev/null
@@ -0,0 +1,259 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence02(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_02)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x48.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xd1.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x02.toByte(),
+            0x10.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x48.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x47.toByte(),
+            0x4F.toByte(),
+            0x4B.toByte(),
+            0x49.toByte(),
+            0x47.toByte(),
+            0x45.toByte(),
+            0x4E.toByte(),
+            0x5F.toByte(),
+            0x61.toByte(),
+            0x30.toByte(),
+            0x31.toByte(),
+            0x53.toByte(),
+            0x65.toByte(),
+            0x72.toByte(),
+            0x69.toByte(),
+            0x65.toByte(),
+            0x73.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xea.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence03.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence03.kt
new file mode 100644 (file)
index 0000000..16311f8
--- /dev/null
@@ -0,0 +1,90 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence03(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_03)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xec.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence04.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence04.kt
new file mode 100644 (file)
index 0000000..2656fc0
--- /dev/null
@@ -0,0 +1,90 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence04(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_04)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xfc.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence05.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence05.kt
new file mode 100644 (file)
index 0000000..6726536
--- /dev/null
@@ -0,0 +1,342 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence05(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_05)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xe4.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xfe.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xe4.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence06.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence06.kt
new file mode 100644 (file)
index 0000000..2243249
--- /dev/null
@@ -0,0 +1,91 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence06(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_06)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x05.toByte(),
+            0x04.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence07.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence07.kt
new file mode 100644 (file)
index 0000000..9496cfd
--- /dev/null
@@ -0,0 +1,124 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence07(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_07)
+    }
+
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xeb.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence08.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence08.kt
new file mode 100644 (file)
index 0000000..6f3fbe3
--- /dev/null
@@ -0,0 +1,163 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence08(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_08)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x30.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xe9.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x30.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence09.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence09.kt
new file mode 100644 (file)
index 0000000..d3b38b5
--- /dev/null
@@ -0,0 +1,92 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence09(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_09)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xf1.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence10.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence10.kt
new file mode 100644 (file)
index 0000000..987413e
--- /dev/null
@@ -0,0 +1,147 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence10(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_10)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xed.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x12.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x12.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x69.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x69.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence11.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/connection/PixproConnectSequence11.kt
new file mode 100644 (file)
index 0000000..6b49136
--- /dev/null
@@ -0,0 +1,92 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection
+
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproConnectSequence11(private val callback: IPixproCommandCallback) :
+    PixproCommandBase() {
+
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_CONNECT_11)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xec.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteFocus.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteFocus.kt
new file mode 100644 (file)
index 0000000..29da4dc
--- /dev/null
@@ -0,0 +1,143 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+
+class PixproExecuteFocus(private val callback: IPixproCommandCallback, posX: Int, posY: Int) : PixproCommandBase()
+{
+    private val data00: Byte = (0x000000ff and posX).toByte()
+    private val data01: Byte = (0x0000ff00 and posX shr 8).toByte()
+    private val data02: Byte = (0x00ff0000 and posX shr 16).toByte()
+    private val data03: Byte = (-0x1000000 and posX shr 24).toByte()
+    private val data10: Byte = (0x000000ff and posY).toByte()
+    private val data11: Byte = (0x0000ff00 and posY shr 8).toByte()
+    private val data12: Byte = (0x00ff0000 and posY shr 16).toByte()
+    private val data13: Byte = (-0x1000000 and posY shr 24).toByte()
+
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_SHUTTER)
+    }
+
+    override fun commandBody(): ByteArray
+    {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x18.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xf6.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x18.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(), data00, data01, data02, data03, data10, data11, data12, data13,
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return (callback)
+    }
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteShutter.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteShutter.kt
new file mode 100644 (file)
index 0000000..0923fa5
--- /dev/null
@@ -0,0 +1,292 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproExecuteShutter(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_SHUTTER)
+    }
+    override fun commandBody(): ByteArray
+    {
+        return byteArrayOf( //  (byte) 0xf9, (byte) 0x03
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x30.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xf9.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x02.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x28.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x90.toByte(),
+            0x01.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xbf.toByte(),
+            0x4d.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x88.toByte(),
+            0x65.toByte(),
+            0xb6.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),  // (byte) 0xef, (byte) 0x03
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xef.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x02.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return callback
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteZoom.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproExecuteZoom.kt
new file mode 100644 (file)
index 0000000..f8559dc
--- /dev/null
@@ -0,0 +1,125 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproExecuteZoom(private val callback: IPixproCommandCallback, direction: Int) : PixproCommandBase()
+{
+    private val data0: Byte = if (direction > 0) 0x03.toByte() else 0x04.toByte()
+
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_ZOOM)
+    }
+
+    override fun commandBody(): ByteArray
+    {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xf7.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x08.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(), data0,
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashAuto.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashAuto.kt
new file mode 100644 (file)
index 0000000..fc887d7
--- /dev/null
@@ -0,0 +1,147 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproFlashAuto(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_FLASH_AUTO)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xed.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x09.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x09.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x02.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashOff.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashOff.kt
new file mode 100644 (file)
index 0000000..124409e
--- /dev/null
@@ -0,0 +1,147 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproFlashOff(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_FLASH_OFF)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xed.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x09.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x09.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashOn.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/command/messages/specific/PixproFlashOn.kt
new file mode 100644 (file)
index 0000000..d778eb7
--- /dev/null
@@ -0,0 +1,147 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.PixproCommandBase
+
+class PixproFlashOn(private val callback: IPixproCommandCallback) : PixproCommandBase()
+{
+    override fun getId() : Int
+    {
+        return (IPixproMessages.SEQ_FLASH_ON)
+    }
+
+    override fun commandBody(): ByteArray {
+        return byteArrayOf(
+            0x2e.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xed.toByte(),
+            0x03.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x80.toByte(),
+            0x09.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x01.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x20.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x09.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x07.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x04.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0x00.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(),
+            0xff.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte(), 0x00.toByte()
+        )
+    }
+
+    override fun responseCallback(): IPixproCommandCallback
+    {
+        return callback
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproCameraConnectSequence.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproCameraConnectSequence.kt
new file mode 100644 (file)
index 0000000..a963ad3
--- /dev/null
@@ -0,0 +1,276 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.connection
+
+import android.graphics.Color
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnection
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.IPixproInternalInterfaces
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommandPublisher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_01
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_02
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_03
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_04
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_05
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_06
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_07
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_08
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_09
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_10
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_CONNECT_11
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_FLASH_AUTO
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_FLASH_OFF
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.base.IPixproMessages.Companion.SEQ_FLASH_ON
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.connection.*
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific.PixproFlashAuto
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific.PixproFlashOff
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.specific.PixproFlashOn
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.status.PixproStatusChecker
+import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
+
+
+class PixproCameraConnectSequence(private val context: AppCompatActivity, private val cameraStatusReceiver: ICameraStatusReceiver, private val cameraConnection : ICameraConnection, private val interfaceProvider : IPixproInternalInterfaces, private val statusChecker: PixproStatusChecker) : Runnable, IPixproCommandCallback, IPixproMessages
+{
+    private val commandIssuer: IPixproCommandPublisher
+    private var flashMode: String = "OFF"
+
+    companion object
+    {
+        private val TAG = PixproCameraConnectSequence::class.java.simpleName
+    }
+
+    init
+    {
+        Log.v(TAG, " PixproCameraConnectSequence")
+        //this.cameraConnection = cameraConnection
+        commandIssuer = interfaceProvider.getIPixproCommandPublisher()
+    }
+
+    override fun run()
+    {
+        try
+        {
+            // カメラとTCP接続
+            //val issuer: IPixproCommandPublisher = interfaceProvider.getCommandPublisher()
+            if (!commandIssuer.isConnected())
+            {
+                if (!interfaceProvider.getIPixproCommunication().connect())
+                {
+                    // 接続失敗...
+                    interfaceProvider.getInformationReceiver().updateMessage(
+                        context.getString(ICameraConstantConvert.ID_STRING_DIALOG_TITLE_CONNECT_FAILED),
+                        false,
+                        true,
+                        Color.RED
+                    )
+                    onConnectError(context.getString(ICameraConstantConvert.ID_STRING_DIALOG_TITLE_CONNECT_FAILED))
+                    return
+                }
+            }
+            else
+            {
+                Log.v(TAG, "SOCKET IS ALREADY CONNECTED...")
+            }
+            // コマンドタスクの実行開始
+            commandIssuer.start()
+
+            // 接続シーケンスの開始
+            startConnectSequence()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+            interfaceProvider.getInformationReceiver().updateMessage(
+                context.getString(ICameraConstantConvert.ID_STRING_DIALOG_TITLE_CONNECT_FAILED),
+                false,
+                true,
+                Color.RED
+            )
+            onConnectError(e.message?: "")
+        }
+    }
+
+    private fun onConnectError(reason: String)
+    {
+        cameraConnection.alertConnectingFailed(reason)
+    }
+
+    override fun receivedMessage(id: Int, rx_body: ByteArray?) {
+        when (id) {
+            SEQ_CONNECT_01 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "1",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence02(this))
+            }
+            SEQ_CONNECT_02 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "2",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence03(this))
+            }
+            SEQ_CONNECT_03 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "3",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence04(this))
+            }
+            SEQ_CONNECT_04 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "4",
+                    false,
+                    false,
+                    0
+                )
+                // ここで、パスワードの Base64情報を切り出す(FC 03 の応答、 0x0058 ~ 64バイトの文字列を切り出して、Base64エンコードする)
+                commandIssuer.enqueueCommand(PixproConnectSequence05(this))
+            }
+            SEQ_CONNECT_05 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "5",
+                    false,
+                    false,
+                    0
+                )
+                // ここで、パスワードの情報を切り出す (FE 03 の応答、 0x0078 ~ 文字列を切り出す。)
+                commandIssuer.enqueueCommand(PixproConnectSequence06(this))
+            }
+            SEQ_CONNECT_06 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "6",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence07(this))
+            }
+            SEQ_CONNECT_07 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "7",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence08(this))
+            }
+            SEQ_CONNECT_08 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "8",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence09(this))
+            }
+            SEQ_CONNECT_09 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "9",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence10(this))
+            }
+            SEQ_CONNECT_10 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "10",
+                    false,
+                    false,
+                    0
+                )
+                commandIssuer.enqueueCommand(PixproConnectSequence11(this))
+            }
+            SEQ_CONNECT_11 -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTING) + "11",
+                    false,
+                    false,
+                    0
+                )
+                if (flashMode.contains("AUTO")) {
+                    commandIssuer.enqueueCommand(PixproFlashAuto(this))
+                } else if (flashMode.contains("ON")) {
+                    commandIssuer.enqueueCommand(PixproFlashOn(this))
+                } else {
+                    commandIssuer.enqueueCommand(PixproFlashOff(this))
+                }
+            }
+            SEQ_FLASH_AUTO, SEQ_FLASH_OFF, SEQ_FLASH_ON -> {
+                interfaceProvider.getInformationReceiver().updateMessage(
+                    context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECT_FINISHED),
+                    false,
+                    false,
+                    0
+                )
+                connectFinished()
+                Log.v(TAG, "  CONNECT TO CAMERA : DONE.")
+            }
+            else -> {
+                Log.v(TAG, " RECEIVED UNKNOWN ID : $id")
+                onConnectError(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_UNKNOWN_MESSAGE))
+            }
+        }
+    }
+
+    private fun startConnectSequence()
+    {
+        interfaceProvider.getInformationReceiver()
+            .updateMessage(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_START), false, false, 0)
+        cameraStatusReceiver.onStatusNotify(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_START))
+        commandIssuer.enqueueCommand(PixproConnectSequence01(this))
+    }
+
+    private fun connectFinished()
+    {
+        try
+        {
+            // 接続成功のメッセージを出す
+            interfaceProvider.getInformationReceiver()
+                .updateMessage(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTED), false, false, 0)
+
+            // ちょっと待つ
+            Thread.sleep(1000)
+
+            //interfaceProvider.getAsyncEventCommunication().connect();
+            //interfaceProvider.getCameraStatusWatcher().startStatusWatch(interfaceProvider.getStatusListener());  ステータスの定期確認は実施しない
+
+            // 接続成功!のメッセージを出す
+            interfaceProvider.getInformationReceiver()
+                .updateMessage(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTED), false, false, 0)
+            onConnectNotify()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    private fun onConnectNotify()
+    {
+        try
+        {
+            val thread = Thread { // カメラとの接続確立を通知する
+                cameraStatusReceiver.onStatusNotify(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CONNECTED))
+                cameraStatusReceiver.onCameraConnected()
+                Log.v(TAG, " onConnectNotify()")
+            }
+            thread.start()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproCameraDisconnectSequence.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproCameraDisconnectSequence.kt
new file mode 100644 (file)
index 0000000..38f72df
--- /dev/null
@@ -0,0 +1,24 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.connection
+
+import androidx.appcompat.app.AppCompatActivity
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.IPixproInternalInterfaces
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.IPixproCommunication
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.status.PixproStatusChecker
+import java.lang.Exception
+
+
+class PixproCameraDisconnectSequence(private val context: AppCompatActivity, private val powerOff: Boolean, private val interfaceProvider : IPixproInternalInterfaces, private val statusChecker: PixproStatusChecker) : Runnable
+{
+    override fun run()
+    {
+        try
+        {
+            statusChecker.stopStatusWatch()
+            interfaceProvider.getIPixproCommunication().disconnect()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproConnection.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproConnection.kt
new file mode 100644 (file)
index 0000000..d75c4b9
--- /dev/null
@@ -0,0 +1,197 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.connection
+
+import android.content.*
+import android.net.ConnectivityManager
+import android.net.wifi.WifiManager
+import android.provider.Settings
+import android.util.Log
+import androidx.appcompat.app.AlertDialog
+import androidx.appcompat.app.AppCompatActivity
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnection
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.IPixproInternalInterfaces
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.status.PixproStatusChecker
+import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
+import java.lang.Exception
+import java.util.concurrent.Executor
+import java.util.concurrent.Executors
+
+class PixproConnection(private val context: AppCompatActivity, private val statusReceiver: ICameraStatusReceiver, private val interfaceProvider : IPixproInternalInterfaces, private val statusChecker: PixproStatusChecker) : ICameraConnection
+{
+    companion object
+    {
+        private val TAG = PixproConnection::class.java.simpleName
+    }
+    private val connectionReceiver: BroadcastReceiver
+    private val cameraExecutor: Executor = Executors.newFixedThreadPool(1)
+    private var connectionStatus: ICameraConnectionStatus.CameraConnectionStatus = ICameraConnectionStatus.CameraConnectionStatus.UNKNOWN
+    init
+    {
+        Log.v(TAG, "PixproConnection()")
+        connectionReceiver = object : BroadcastReceiver() {
+            override fun onReceive(context: Context, intent: Intent)
+            {
+                onReceiveBroadcastOfConnection(context, intent)
+            }
+        }
+     }
+
+    /**
+     *
+     *
+     */
+    private fun onReceiveBroadcastOfConnection(context: Context, intent: Intent)
+    {
+        statusReceiver.onStatusNotify(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CHECK_WIFI))
+        Log.v(TAG, context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CHECK_WIFI))
+        try
+        {
+            val action = intent.action
+            if (action == null)
+            {
+                Log.v(TAG, "intent.getAction() : null")
+                return
+            }
+
+            @Suppress("DEPRECATION")
+            if (action == ConnectivityManager.CONNECTIVITY_ACTION)
+            {
+                Log.v(TAG, "onReceiveBroadcastOfConnection() : CONNECTIVITY_ACTION")
+                val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
+                val info = wifiManager.connectionInfo
+                if (wifiManager.isWifiEnabled && info != null)
+                {
+                    Log.v(TAG, "Network ID is " + info.networkId)
+                    // 自動接続が指示されていた場合は、カメラとの接続処理を行う
+                    connectToCamera()
+                }
+                else
+                {
+                    if (info == null)
+                    {
+                        Log.v(TAG, "NETWORK INFO IS NULL.")
+                    }
+                    else
+                    {
+                        Log.v(TAG, "isWifiEnabled : " + wifiManager.isWifiEnabled + " NetworkId : " + info.networkId)
+                    }
+                }
+            }
+        }
+        catch (e: Exception)
+        {
+            Log.w(TAG, "onReceiveBroadcastOfConnection() EXCEPTION" + e.message)
+            e.printStackTrace()
+        }
+    }
+
+    fun startWatchWifiStatus(context: Context)
+    {
+        Log.v(TAG, "startWatchWifiStatus()")
+        statusReceiver.onStatusNotify("prepare")
+        val filter = IntentFilter()
+        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION)
+        @Suppress("DEPRECATION")
+        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION)
+        context.registerReceiver(connectionReceiver, filter)
+    }
+
+    fun stopWatchWifiStatus(context: Context)
+    {
+        Log.v(TAG, "stopWatchWifiStatus()")
+        context.unregisterReceiver(connectionReceiver)
+        disconnect(false)
+    }
+
+    fun disconnect(powerOff: Boolean)
+    {
+        Log.v(TAG, "disconnect()")
+        disconnectFromCamera(powerOff)
+        connectionStatus = ICameraConnectionStatus.CameraConnectionStatus.DISCONNECTED
+        statusReceiver.onCameraDisconnected()
+    }
+
+    fun connect()
+    {
+        Log.v(TAG, "connect()")
+        connectToCamera()
+    }
+
+    override fun alertConnectingFailed(message: String?)
+    {
+        Log.v(TAG, "alertConnectingFailed() : $message")
+        try
+        {
+            val builder: AlertDialog.Builder = AlertDialog.Builder(context)
+                .setTitle(context.getString(ICameraConstantConvert.ID_STRING_DIALOG_TITLE_CONNECT_FAILED))
+                .setMessage(message)
+                .setPositiveButton(context.getString(ICameraConstantConvert.ID_STRING_DIALOG_BUTTON_RETRY)) { _, _ -> connect() }
+                .setNeutralButton(ICameraConstantConvert.ID_STRING_DIALOG_BUTTON_NETWORK_SETTINGS) { _, _ ->
+                    try
+                    {
+                        // Wifi 設定画面を表示する
+                        context.startActivity(Intent(Settings.ACTION_WIFI_SETTINGS))
+                    }
+                    catch (ex: ActivityNotFoundException)
+                    {
+                        // Activity が存在しなかった...設定画面が起動できなかった
+                        Log.v(TAG, "android.content.ActivityNotFoundException...")
+
+                        // この場合は、再試行と等価な動きとする
+                        connect()
+                    }
+                    catch (e: Exception)
+                    {
+                        e.printStackTrace()
+                    }
+                }
+            context.runOnUiThread { builder.show() }
+        }
+        catch (e : Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    fun getConnectionStatus(): ICameraConnectionStatus.CameraConnectionStatus
+    {
+        Log.v(TAG, "getConnectionStatus()")
+        return connectionStatus
+    }
+
+    override fun forceUpdateConnectionStatus(status: ICameraConnectionStatus.CameraConnectionStatus)
+    {
+        Log.v(TAG, "forceUpdateConnectionStatus()")
+        connectionStatus = status
+    }
+
+    private fun disconnectFromCamera(powerOff: Boolean)
+    {
+        Log.v(TAG, "disconnectFromCamera()")
+        try
+        {
+            cameraExecutor.execute(PixproCameraDisconnectSequence(context, powerOff, interfaceProvider, statusChecker))
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    private fun connectToCamera()
+    {
+        Log.v(TAG, "connectToCamera()")
+        connectionStatus = ICameraConnectionStatus.CameraConnectionStatus.CONNECTING
+        try
+        {
+            cameraExecutor.execute(PixproCameraConnectSequence(context, statusReceiver, this, interfaceProvider, statusChecker))
+        }
+        catch (e: Exception)
+        {
+            Log.v(TAG, "connectToCamera() EXCEPTION : " + e.message)
+            e.printStackTrace()
+        }
+    }
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproConnectionClient.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/connection/PixproConnectionClient.kt
new file mode 100644 (file)
index 0000000..2a9fd2d
--- /dev/null
@@ -0,0 +1,313 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.connection
+
+import android.content.Context
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.SonyCameraDeviceProvider
+import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
+import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
+import jp.osdn.gokigen.gokigenassets.utils.communication.XmlElement
+import java.net.DatagramPacket
+import java.net.DatagramSocket
+import java.net.InetSocketAddress
+import java.nio.charset.Charset
+import android.net.DhcpInfo
+import androidx.core.content.ContextCompat.getSystemService
+import android.net.wifi.WifiManager
+import androidx.core.content.ContextCompat
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.connection.SonySsdpClient
+import java.net.InetAddress
+
+
+class PixproConnectionClient(private val context: Context, private val callback: ISearchResultCallback, private val cameraStatusReceiver: ICameraStatusReceiver, private var sendRepeatCount: Int = 0)
+{
+    companion object
+    {
+        private val TAG = PixproConnectionClient::class.java.simpleName
+        private const val SEND_TIMES_DEFAULT = 1
+        private const val SEND_WAIT_DURATION_MS = 300
+        private const val SSDP_RECEIVE_TIMEOUT = 4 * 1000 // msec
+        private const val PACKET_BUFFER_SIZE = 4096
+
+        private const val QUERY_STRING = "AOFQUERY:GOKIGEN01Family,1"
+        private const val TARGET_UDP_PORT = 5175
+    }
+
+    init
+    {
+        this.sendRepeatCount = if (sendRepeatCount > 0) sendRepeatCount else SEND_TIMES_DEFAULT
+    }
+
+    private fun getBroadcastAddress(): InetAddress
+    {
+/*
+        try
+        {
+            val wifi = context.getSystemService(Context.WIFI_SERVICE) as WifiManager?
+            val dhcp = wifi!!.dhcpInfo
+            // handle null somehow
+            val broadcast = dhcp.ipAddress and dhcp.netmask or dhcp.netmask.inv()
+            val quads = ByteArray(4)
+            for (k in 0..3) quads[k] = (broadcast shr k * 8).toByte()
+            return InetAddress.getByAddress(quads)
+        }
+        catch (e : Exception)
+        {
+            e.printStackTrace()
+        }
+*/
+        return (InetAddress.getByName("255.255.255.255"))
+    }
+
+    fun search()
+    {
+        val sendData = QUERY_STRING.toByteArray()
+        val detailString = ""
+        var socket: DatagramSocket? = null
+        var receivePacket: DatagramPacket
+        val packet: DatagramPacket
+
+        //  要求の送信
+        try
+        {
+            socket = DatagramSocket()
+            socket.reuseAddress = true
+            val iAddress = InetSocketAddress(getBroadcastAddress(), TARGET_UDP_PORT)
+            packet = DatagramPacket(sendData, sendData.size, iAddress)
+
+            // 要求を繰り返し送信する
+            for (loop in 1..sendRepeatCount)
+            {
+                cameraStatusReceiver.onStatusNotify(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CAMERA_SEARCH_REQUEST) + " " + loop)
+                socket.send(packet)
+                Thread.sleep(SEND_WAIT_DURATION_MS.toLong())
+            }
+            Log.v(TAG, " UDP QUERY : SEND $QUERY_STRING")
+        }
+        catch (e: Exception)
+        {
+            if (socket != null && !socket.isClosed)
+            {
+                socket.close()
+            }
+            e.printStackTrace()
+
+            // エラー応答する
+            callback.onErrorFinished(detailString + " : " + e.localizedMessage)
+            return
+        }
+
+        // 応答の受信
+        val startTime = System.currentTimeMillis()
+        var currentTime = System.currentTimeMillis()
+        val foundDevices: MutableList<String?> = ArrayList()
+        val array = ByteArray(PACKET_BUFFER_SIZE)
+
+        try
+        {
+            cameraStatusReceiver.onStatusNotify(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_WAIT_REPLY_CAMERA))
+            while (currentTime - startTime < SSDP_RECEIVE_TIMEOUT)
+            {
+                receivePacket = DatagramPacket(array, array.size)
+                socket.soTimeout = SSDP_RECEIVE_TIMEOUT
+                socket.receive(receivePacket)
+                val ssdpReplyMessage = String(receivePacket.getData(), 0, receivePacket.length, Charset.forName("UTF-8"))
+                var ddUsn: String?
+                if (ssdpReplyMessage.contains("HTTP/1.1 200"))
+                {
+                    ddUsn = findParameterValue(ssdpReplyMessage, "USN")
+                    cameraStatusReceiver.onStatusNotify(context.getString(ICameraConstantConvert.ID_STRING_CONNECT_CAMERA_RECEIVED_REPLY))
+                    if (!foundDevices.contains(ddUsn))
+                    {
+                        val ddLocation = findParameterValue(ssdpReplyMessage, "LOCATION")
+                        foundDevices.add(ddUsn)
+
+                        //// Fetch Device Description XML and parse it.
+                        if (ddLocation != null)
+                        {
+                            cameraStatusReceiver.onStatusNotify("LOCATION : $ddLocation")
+                            val device: ISonyCamera? = searchSonyCameraDevice(ddLocation)
+                            if ((device != null)&&(device.hasApiService("camera")))
+                            {
+                                cameraStatusReceiver.onStatusNotify(context.getString(
+                                    ICameraConstantConvert.ID_STRING_CONNECT_CAMERA_FOUND) + " " + device.getFriendlyName())
+                                callback.onDeviceFound(device)
+                                // カメラが見つかった場合は breakする
+                                break
+                            }
+                            else
+                            {
+                                // カメラが見つからない...
+                                cameraStatusReceiver.onStatusNotify(context.getString(
+                                    ICameraConstantConvert.ID_STRING_CAMERA_NOT_FOUND))
+                            }
+                        }
+                    }
+                    else
+                    {
+                        Log.v(TAG, "Already received. : $ddUsn")
+                    }
+                }
+                else
+                {
+                    Log.v(TAG, " SSDP REPLY MESSAGE (ignored) : $ssdpReplyMessage")
+                }
+                currentTime = System.currentTimeMillis()
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+
+            // エラー応答する
+            callback.onErrorFinished(detailString + " : " + e.localizedMessage)
+            return
+        }
+        finally
+        {
+            try
+            {
+                if (!socket.isClosed())
+                {
+                    socket.close()
+                }
+            }
+            catch (ee: Exception)
+            {
+                ee.printStackTrace()
+            }
+        }
+        callback.onFinished()
+    }
+
+    private fun findParameterValue(ssdpMessage: String, paramName: String): String?
+    {
+        var name = paramName
+        if (!name.endsWith(":"))
+        {
+            name = "$name:"
+        }
+        var start = ssdpMessage.indexOf(name)
+        val end = ssdpMessage.indexOf("\r\n", start)
+        if (start != -1 && end != -1)
+        {
+            start += name.length
+            try
+            {
+                return ssdpMessage.substring(start, end).trim { it <= ' ' }
+            }
+            catch (e: Exception)
+            {
+                e.printStackTrace()
+            }
+        }
+        return null
+    }
+
+    private fun searchSonyCameraDevice(ddUrl: String): ISonyCamera?
+    {
+        val httpClient = SimpleHttpClient()
+        var device: SonyCameraDeviceProvider? = null
+        val ddXml: String
+        try
+        {
+            ddXml = httpClient.httpGet(ddUrl, -1)
+            Log.d(TAG, "fetch () httpGet done. : " + ddXml.length)
+            if (ddXml.length < 2)
+            {
+                // 内容がないときは...終了する
+                Log.v(TAG, "NO BODY")
+                return (null)
+            }
+        }
+        catch (e: java.lang.Exception)
+        {
+            e.printStackTrace()
+            return (null)
+        }
+        try
+        {
+            //Log.v(TAG, "ddXml : " + ddXml);
+            val rootElement = XmlElement.parse(ddXml)
+
+            // "root"
+            if ("root" == rootElement.tagName)
+            {
+                // "device"
+                val deviceElement = rootElement.findChild("device")
+                val friendlyName = deviceElement.findChild("friendlyName").value
+                val modelName = deviceElement.findChild("modelName").value
+                val udn = deviceElement.findChild("UDN").value
+
+                // "iconList"
+                var iconUrl = ""
+                val iconListElement = deviceElement.findChild("iconList")
+                val iconElements = iconListElement.findChildren("icon")
+                for (iconElement in iconElements) {
+                    // Choose png icon to show Android UI.
+                    if ("image/png" == iconElement.findChild("mimetype").value) {
+                        val uri = iconElement.findChild("url").value
+                        val hostUrl = toSchemeAndHost(ddUrl)
+                        iconUrl = hostUrl + uri
+                    }
+                }
+                device = SonyCameraDeviceProvider(ddUrl, friendlyName, modelName, udn, iconUrl)
+
+                // "av:X_ScalarWebAPI_DeviceInfo"
+                val wApiElement = deviceElement.findChild("X_ScalarWebAPI_DeviceInfo")
+                val wApiServiceListElement = wApiElement.findChild("X_ScalarWebAPI_ServiceList")
+                val wApiServiceElements =
+                    wApiServiceListElement.findChildren("X_ScalarWebAPI_Service")
+                for (wApiServiceElement in wApiServiceElements) {
+                    val serviceName =
+                        wApiServiceElement.findChild("X_ScalarWebAPI_ServiceType").value
+                    val actionUrl =
+                        wApiServiceElement.findChild("X_ScalarWebAPI_ActionList_URL").value
+                    device.addApiService(serviceName, actionUrl)
+                }
+            }
+        } catch (e: java.lang.Exception) {
+            e.printStackTrace()
+        }
+        Log.d(TAG, "fetch () parsing XML done.")
+        if (device == null) {
+            Log.v(TAG, "device is null.")
+        }
+        return device
+    }
+
+    private fun toSchemeAndHost(url: String): String {
+        val i = url.indexOf("://") // http:// or https://
+        if (i == -1) {
+            return ""
+        }
+        val j = url.indexOf("/", i + 3)
+        return if (j == -1) {
+            ""
+        } else url.substring(0, j)
+    }
+
+    private fun toHost(url: String): String
+    {
+        val i = url.indexOf("://") // http:// or https://
+        if (i == -1) {
+            return ""
+        }
+        val j = url.indexOf(":", i + 3)
+        return if (j == -1) {
+            ""
+        } else url.substring(i + 3, j)
+    }
+
+    /**
+     * 検索結果のコールバック
+     *
+     */
+    interface ISearchResultCallback
+    {
+        fun onDeviceFound(cameraDevice: ISonyCamera) // デバイスが見つかった!
+        fun onFinished() // 通常の終了をしたとき
+        fun onErrorFinished(reason: String?) // エラーが発生して応答したとき
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/liveview/PixproLiveViewControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/liveview/PixproLiveViewControl.kt
new file mode 100644 (file)
index 0000000..5374593
--- /dev/null
@@ -0,0 +1,121 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.liveview
+
+import android.content.Context
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
+import java.lang.Exception
+import jp.osdn.gokigen.gokigenassets.liveview.image.CameraLiveViewListenerImpl
+import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
+import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLiveViewSlicer
+
+
+class PixproLiveViewControl(context: Context, private val informationReceiver: IInformationReceiver, camera_ip : String, liveview_port : Int) : ILiveViewController
+{
+    private val liveViewListener = CameraLiveViewListenerImpl(context, informationReceiver)
+    private val liveViewUrl: String = "http://$camera_ip:$liveview_port/"; // "http://172.16.0.254:9176";
+    private var whileFetching = false
+
+    companion object
+    {
+        private val TAG = PixproLiveViewControl::class.java.simpleName
+        private const val FETCH_ERROR_MAX = 30
+    }
+
+    override fun startLiveView(isCameraScreen: Boolean)
+    {
+        Log.v(TAG, "startLiveView() : $isCameraScreen")
+        try
+        {
+            val thread = Thread {
+                try
+                {
+                    start(liveViewUrl)
+                }
+                catch (e: Exception)
+                {
+                    e.printStackTrace()
+                }
+            }
+            thread.start()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    override fun stopLiveView()
+    {
+        Log.v(TAG, " stopLiveView()")
+    }
+
+
+    private fun start(streamUrl: String)
+    {
+        if (whileFetching)
+        {
+            Log.v(TAG, "start() already starting.")
+            return  // すでにスタートしているので、LVの再スタートはしない。
+        }
+        whileFetching = true
+
+        // A thread for retrieving liveview data from server.
+        try
+        {
+            val thread = Thread {
+                Log.d(TAG, "Starting retrieving streaming data from server.")
+                // var slicer: SimpleLiveviewSlicer? = null
+                var continuousNullDataReceived = 0
+                val startMarker = intArrayOf(0x0a, 0x0a, 0xff, 0xd8)
+                try {
+                    // Create Slicer to open the stream and parse it.
+                    val slicer = SimpleLiveViewSlicer()
+                    slicer.setMJpegStartMarker(startMarker)
+                    slicer.open(streamUrl)
+                    while (whileFetching)
+                    {
+                        val payload: SimpleLiveViewSlicer.Payload? = slicer.nextPayloadForMotionJpeg()
+                        if (payload == null)
+                        {
+                            //Log.v(TAG, "Liveview Payload is null.");
+                            continuousNullDataReceived++
+                            if (continuousNullDataReceived > FETCH_ERROR_MAX) {
+                                Log.d(TAG, " FETCH ERROR MAX OVER ")
+                                break
+                            }
+                            continue
+                        }
+                        //if (mJpegQueue.size() == 2)
+                        //{
+                        //    mJpegQueue.remove();
+                        //}
+                        //mJpegQueue.add(payload.getJpegData());
+                        liveViewListener.onUpdateLiveView(payload.getJpegData() ?: ByteArray(0), null)
+                        continuousNullDataReceived = 0
+                    }
+                }
+                catch (e: Exception)
+                {
+                    e.printStackTrace()
+                }
+                finally
+                {
+                    //mJpegQueue.clear();
+                    if (!whileFetching && continuousNullDataReceived > FETCH_ERROR_MAX)
+                    {
+                        // 再度ライブビューのスタートをやってみる。
+                        //whileFetching = false;
+                        //continuousNullDataReceived = 0;
+                        start(streamUrl)
+                    }
+                }
+            }
+            thread.start()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/status/PixproStatusChecker.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/status/PixproStatusChecker.kt
new file mode 100644 (file)
index 0000000..84fa71d
--- /dev/null
@@ -0,0 +1,82 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.status
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusUpdateNotify
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusWatcher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages.IPixproCommandCallback
+import jp.osdn.gokigen.gokigenassets.liveview.message.IMessageDrawer
+import java.lang.Exception
+
+
+class PixproStatusChecker : IPixproCommandCallback, ICameraStatusWatcher, ICameraStatus
+{
+    private val statusHolder = PixproStatusHolder()
+    private var whileFetching = false
+    private var notifier: ICameraStatusUpdateNotify? = null
+
+    companion object
+    {
+        private val TAG = PixproStatusChecker::class.java.simpleName
+    }
+
+    override fun getStatusList(key: String): List<String?> {
+        try {
+            return if (statusHolder == null) {
+                ArrayList()
+            } else statusHolder.getAvailableItemList(key)
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+        return ArrayList()
+    }
+
+    override fun getStatus(key: String): String {
+        try {
+            return if (statusHolder == null) {
+                ""
+            } else statusHolder.getItemStatus(key)
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+        return ""
+    }
+
+    override fun getStatusColor(key: String): Int {
+        TODO("Not yet implemented")
+    }
+
+    override fun setStatus(key: String, value: String) {
+        Log.v(TAG, "setStatus($key, $value)")
+    }
+
+    fun startStatusWatch(notifier: ICameraStatusUpdateNotify) {
+        if (whileFetching) {
+            Log.v(TAG, "startStatusWatch() already starting.")
+            return
+        }
+        try {
+            this.notifier = notifier
+            whileFetching = true
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+    override fun startStatusWatch(
+        indicator: IMessageDrawer?,
+        notifier: ICameraStatusUpdateNotify?
+    ) {
+        TODO("Not yet implemented")
+    }
+
+    override fun stopStatusWatch() {
+        Log.v(TAG, "stoptStatusWatch()")
+        whileFetching = false
+        notifier = null
+    }
+
+    override fun receivedMessage(id: Int, rx_body: ByteArray?) {}
+
+
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/status/PixproStatusHolder.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/wrapper/status/PixproStatusHolder.kt
new file mode 100644 (file)
index 0000000..fbcdf13
--- /dev/null
@@ -0,0 +1,200 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.status
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusUpdateNotify
+import androidx.collection.SparseArrayCompat
+
+import android.util.SparseIntArray
+import java.lang.Exception
+import java.util.*
+import kotlin.collections.ArrayList
+
+
+class PixproStatusHolder
+{
+
+    companion object
+    {
+        private val TAG = PixproStatusHolder::class.java.simpleName
+    }
+
+    private val statusHolder: SparseIntArray = SparseIntArray()
+    private val statusNameArray: SparseArrayCompat<String>  = SparseArrayCompat()
+    private fun prepareStatusNameArray() {
+/*
+        statusNameArray.clear();
+        statusNameArray.append(BATTERY_LEVEL, BATTERY_LEVEL_STR);
+        statusNameArray.append(WHITE_BALANCE, WHITE_BALANCE_STR);
+        statusNameArray.append(APERTURE, APERTURE_STR);
+        statusNameArray.append(FOCUS_MODE, FOCUS_MODE_STR);
+        statusNameArray.append(SHOOTING_MODE, SHOOTING_MODE_STR);
+        statusNameArray.append(FLASH, FLASH_STR);
+        statusNameArray.append(EXPOSURE_COMPENSATION, EXPOSURE_COMPENSATION_STR);
+        statusNameArray.append(SELF_TIMER, SELF_TIMER_STR);
+        statusNameArray.append(FILM_SIMULATION, FILM_SIMULATION_STR);
+        statusNameArray.append(IMAGE_FORMAT, IMAGE_FORMAT_STR);
+        statusNameArray.append(RECMODE_ENABLE, RECMODE_ENABLE_STR);
+        statusNameArray.append(F_SS_CONTROL, F_SS_CONTROL_STR);
+        statusNameArray.append(ISO, ISO_STR);
+        statusNameArray.append(MOVIE_ISO, MOVIE_ISO_STR);
+        statusNameArray.append(FOCUS_POINT, FOCUS_POINT_STR);
+        statusNameArray.append(DEVICE_ERROR, DEVICE_ERROR_STR);
+        statusNameArray.append(IMAGE_FILE_COUNT, IMAGE_FILE_COUNT_STR);
+        statusNameArray.append(SDCARD_REMAIN_SIZE, SDCARD_REMAIN_SIZE_STR);
+        statusNameArray.append(FOCUS_LOCK, FOCUS_LOCK_STR);
+        statusNameArray.append(MOVIE_REMAINING_TIME, MOVIE_REMAINING_TIME_STR);
+        statusNameArray.append(SHUTTER_SPEED, SHUTTER_SPEED_STR);
+        statusNameArray.append(IMAGE_ASPECT,IMAGE_ASPECT_STR);
+        statusNameArray.append(BATTERY_LEVEL_2, BATTERY_LEVEL_2_STR);
+
+        statusNameArray.append(UNKNOWN_DF00, UNKNOWN_DF00_STR);
+        statusNameArray.append(PICTURE_JPEG_COUNT, PICTURE_JPEG_COUNT_STR);
+        statusNameArray.append(UNKNOWN_D400, UNKNOWN_D400_STR);
+        statusNameArray.append(UNKNOWN_D401, UNKNOWN_D401_STR);
+        statusNameArray.append(UNKNOWN_D52F, UNKNOWN_D52F_STR);
+*/
+    }
+
+    fun updateValue(
+        notifier: ICameraStatusUpdateNotify?,
+        id: Int,
+        data0: Byte,
+        data1: Byte,
+        data2: Byte,
+        data3: Byte
+    ) {
+        try {
+            val value =
+                (data3.toInt() and 0xff shl 24) + (data2.toInt() and 0xff shl 16) + (data1.toInt() and 0xff shl 8) + (data0.toInt() and 0xff)
+            val currentValue = statusHolder[id, -1]
+            Log.v(TAG, "STATUS  ID: $id  value : $value ($currentValue)")
+            statusHolder.put(id, value)
+            if (currentValue != value) {
+                //Log.v(TAG, "STATUS  ID: " + id + " value : " + currentValue + " -> " + value);
+                notifier?.let { updateDetected(it, id, currentValue, value) }
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+    private fun updateDetected(
+        notifier: ICameraStatusUpdateNotify,
+        id: Int,
+        previous: Int,
+        current: Int
+    ) {
+        try {
+            val idName = statusNameArray[id, "Unknown"]
+            Log.v(
+                TAG,
+                java.lang.String.format(
+                    Locale.US,
+                    "<< UPDATE STATUS >> id: 0x%04x[%s] 0x%08x(%d) -> 0x%08x(%d)",
+                    id,
+                    idName,
+                    previous,
+                    previous,
+                    current,
+                    current
+                )
+            )
+            //Log.v(TAG, "updateDetected(ID: " + id + " [" + idName + "] " + previous + " -> " + current + " )");
+/*
+            if (id == FOCUS_LOCK)
+            {
+                if (current == 1)
+                {
+                    // focus Lock
+                    notifier.updateFocusedStatus(true, true);
+                }
+                else
+                {
+                    // focus unlock
+                    notifier.updateFocusedStatus(false, false);
+                }
+            }
+*/
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+    /**
+     * 認識したカメラのステータス名称のリストを応答する
+     *
+     */
+    private val availableStatusNameList: List<String?>
+        private get() {
+            val selection: ArrayList<String?> = ArrayList()
+            try {
+                for (index in 0 until statusHolder.size()) {
+                    val key = statusHolder.keyAt(index)
+                    selection.add(
+                        statusNameArray[key, java.lang.String.format(
+                            Locale.US,
+                            "0x%04x",
+                            key
+                        )]
+                    )
+                }
+            } catch (e: Exception) {
+                e.printStackTrace()
+            }
+            return selection
+        }
+
+    fun getAvailableItemList(listKey: String?): List<String?> {
+        if (listKey == null) {
+            // アイテム名の一覧を応答する
+            return availableStatusNameList
+        }
+
+        /////  選択可能なステータスの一覧を取得する : でも以下はアイテム名の一覧... /////
+        val selection: ArrayList<String?> = ArrayList()
+        try {
+            for (index in 0 until statusHolder.size()) {
+                val key = statusHolder.keyAt(index)
+                selection.add(statusNameArray[key])
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+        return selection
+    }
+
+    fun getItemStatus(key: String): String {
+        var key = key
+        try {
+            val strIndex = key.indexOf("x")
+            Log.v(TAG, "getItemStatus() : $key [$strIndex]")
+            if (strIndex >= 1) {
+                key = key.substring(strIndex + 1)
+                try {
+                    val id = key.toInt(16)
+                    val value = statusHolder[id]
+                    Log.v(TAG, "getItemStatus() value : $value")
+                    return value.toString() + ""
+                } catch (e: Exception) {
+                    e.printStackTrace()
+                }
+            }
+            for (index in 0 until statusNameArray.size()) {
+                val id = statusNameArray.keyAt(index)
+                val strKey = statusNameArray.valueAt(index)
+                if (key.contentEquals(strKey)) {
+                    val value = statusHolder[id]
+                    return value.toString() + ""
+                }
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+        return "? [$key]"
+    }
+
+    init {
+        statusHolder.clear()
+        prepareStatusNameArray()
+    }
+}
@@ -1,21 +1,21 @@
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax
 
 import android.util.Log
 import android.view.KeyEvent
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.ICaptureModeReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.ICaptureModeReceiver
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveViewRefresher
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection.IUseGR2CommandNotify
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection.RicohGr2Connection
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.liveview.RicohGr2LiveViewControl
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.*
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.status.RicohGr2StatusChecker
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.wrapper.RicohGr2RunMode
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.wrapper.playback.RicohGr2PlaybackControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection.IUseGR2CommandNotify
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection.RicohGr2Connection
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.liveview.RicohGr2LiveViewControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.*
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.status.RicohGr2StatusChecker
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.wrapper.RicohGr2RunMode
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.wrapper.playback.RicohGr2PlaybackControl
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.liveview
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.liveview
 
 import android.content.Context
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection.IUseGR2CommandNotify
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection.IUseGR2CommandNotify
 import jp.osdn.gokigen.gokigenassets.liveview.image.CameraLiveViewListenerImpl
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLiveViewSlicer
 
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.IRicohGr2ButtonControl.Companion.SPECIAL_GREEN_BUTTON
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.IRicohGr2ButtonControl.Companion.SPECIAL_GREEN_BUTTON
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
 
@@ -1,10 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICaptureControl
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.takepicture.RicohGr2MovieShotControl
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.takepicture.RicohGr2SingleShotControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.takepicture.RicohGr2MovieShotControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.takepicture.RicohGr2SingleShotControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 
 /**
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
 
 import android.graphics.PointF
 import android.view.MotionEvent
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.takepicture.RicohGr2AutoFocusControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.takepicture.RicohGr2AutoFocusControl
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.wrapper.playback
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.wrapper.playback
 
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.playback.ICameraFileInfo
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.playback.ICameraFileInfoSetter
@@ -1,10 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony
 
 import android.util.Log
 import android.view.KeyEvent
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
@@ -17,18 +17,18 @@ import jp.osdn.gokigen.gokigenassets.liveview.storeimage.StoreImage
 import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
-import jp.osdn.gokigen.gokigenassets.camera.sony.liveview.SonyLiveViewControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.operation.SonyCameraCaptureControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.operation.SonyCameraFocusControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.operation.SonyCameraZoomLensControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraHolder
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.connection.SonyCameraConnection
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener.SonyCameraEventObserver
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCamera
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.SonyCameraApi
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener.ISonyCameraEventObserver
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener.SonyStatus
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.liveview.SonyLiveViewControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.SonyCameraCaptureControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.SonyCameraFocusControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.SonyCameraZoomLensControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.connection.SonyCameraConnection
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener.SonyCameraEventObserver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.SonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener.ISonyCameraEventObserver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener.SonyStatus
 import org.json.JSONObject
 import kotlin.collections.ArrayList
 
@@ -1,11 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.liveview
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.liveview
 
 import android.content.Context
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
 import org.json.JSONObject
-import jp.osdn.gokigen.gokigenassets.liveview.image.CameraLiveViewListenerImpl
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import jp.osdn.gokigen.gokigenassets.liveview.image.IImageDataReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLiveViewSlicer
@@ -1,11 +1,11 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICaptureControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.operation.takepicture.SingleShotControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.takepicture.SingleShotControl
 import java.lang.Exception
 
 
@@ -1,12 +1,12 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation
 
 import android.util.Log
 import android.view.MotionEvent
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.operation.takepicture.AutoFocusControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.takepicture.AutoFocusControl
 import java.lang.Exception
 
 class SonyCameraFocusControl(private val frameDisplay: IAutoFocusFrameDisplay, indicator: IIndicatorControl) : IFocusingControl
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IZoomLensControl
 import java.lang.Exception
 
@@ -1,11 +1,11 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.takepicture
 
 import org.json.JSONObject
 import android.graphics.RectF
 import android.graphics.PointF
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay.FocusFrameStatus
 import java.lang.Exception
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.takepicture
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 import java.lang.Exception
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.connection
 
 import android.util.Log
 import androidx.appcompat.app.AppCompatActivity
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCamera
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraHolder
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnection
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_CAMERA_FOUND
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.connection
 
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus.CameraConnectionStatus
 import android.net.ConnectivityManager
 import android.net.wifi.WifiManager
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraHolder
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import android.content.*
 import android.provider.Settings
@@ -1,10 +1,10 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.connection
 
 import android.content.Context
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCamera
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.SonyCameraDeviceProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCamera
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.SonyCameraDeviceProvider
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import jp.osdn.gokigen.gokigenassets.utils.communication.XmlElement
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener
 
 import android.content.Context
 import android.os.Handler
@@ -6,7 +6,7 @@ import android.util.Log
 import org.json.JSONObject
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusHolder
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import java.lang.Exception
 import java.lang.Thread.sleep
 
@@ -1,10 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener
 
 import android.graphics.Color
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
-import jp.osdn.gokigen.gokigenassets.camera.sony.operation.SonyCameraFocusControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import org.json.JSONObject
 import java.lang.Exception
 
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
 import org.json.JSONArray
 import kotlin.math.abs
 
@@ -1,19 +1,19 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta
 
 import android.util.Log
 import android.view.KeyEvent
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
-import jp.osdn.gokigen.gokigenassets.camera.theta.connection.ThetaCameraConnection
-import jp.osdn.gokigen.gokigenassets.camera.theta.liveview.ThetaLiveViewControl
-import jp.osdn.gokigen.gokigenassets.camera.theta.operation.ThetaMovieRecordingControl
-import jp.osdn.gokigen.gokigenassets.camera.theta.operation.ThetaOptionSetControl
-import jp.osdn.gokigen.gokigenassets.camera.theta.operation.ThetaSingleShotControl
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.ICaptureModeReceiver
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.ThetaCameraStatusWatcher
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.ThetaSessionHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.connection.ThetaCameraConnection
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.liveview.ThetaLiveViewControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation.ThetaMovieRecordingControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation.ThetaOptionSetControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation.ThetaSingleShotControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.ICaptureModeReceiver
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.ThetaCameraStatusWatcher
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.ThetaSessionHolder
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_BUTTON_SHUTTER
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_PREFERENCE_CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_PREFERENCE_CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW_DEFAULT_VALUE
@@ -1,11 +1,11 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.connection
 
 import android.util.Log
 import androidx.appcompat.app.AppCompatActivity
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnection
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdNotifier
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdNotifier
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CAMERA_CONNECT_RESPONSE_NG
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CAMERA_NOT_FOUND
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_CONNECTED
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.connection
 
 import android.content.*
 import android.net.ConnectivityManager
@@ -12,10 +12,10 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnection
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
-import jp.osdn.gokigen.gokigenassets.camera.theta.operation.IOperationCallback
-import jp.osdn.gokigen.gokigenassets.camera.theta.operation.ThetaOptionSetControl
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdNotifier
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation.IOperationCallback
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation.ThetaOptionSetControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdNotifier
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdProvider
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_PREFERENCE_THETA_LIVEVIEW_RESOLUTION
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_PREFERENCE_THETA_LIVEVIEW_RESOLUTION_DEFAULT_VALUE
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.ID_STRING_CONNECT_CHECK_WIFI
@@ -1,8 +1,8 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.liveview
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.liveview
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdProvider
 import jp.osdn.gokigen.gokigenassets.liveview.image.CameraLiveViewListenerImpl
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLiveViewSlicer
 
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdProvider
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaStatusHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaStatusHolder
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdProvider
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
 class ThetaOptionGetControl(private val sessionIdProvider: IThetaSessionIdProvider, private val executeUrl : String = "http://192.168.1.1")
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdProvider
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
 
@@ -1,9 +1,9 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaSessionIdProvider
-import jp.osdn.gokigen.gokigenassets.camera.theta.status.IThetaStatusHolder
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaSessionIdProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status.IThetaStatusHolder
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import org.json.JSONObject
@@ -1,7 +1,7 @@
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
 
 import android.util.Log
-import jp.osdn.gokigen.gokigenassets.camera.theta.operation.ThetaOptionSetControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation.ThetaOptionSetControl
 
 class ThetaCameraStatusListHolder(private val sessionIdProvider: IThetaSessionIdProvider, executeUrl : String = "http://192.168.1.1")
 {
index 81588b4..8337b90 100644 (file)
@@ -20,6 +20,7 @@ interface ICameraConstantConvert
         const val ID_STRING_CONNECT_CONNECT = R.string.connect_connect
         const val ID_STRING_CONNECT_CONNECTING = R.string.connect_connecting
         const val ID_STRING_CONNECT_CONNECTED = R.string.connect_connected
+        const val ID_STRING_CONNECT_CONNECT_FINISHED = R.string.connect_connect_finished
         const val ID_STRING_CONNECT_CHANGE_RUN_MODE = R.string.connect_change_run_mode
         const val ID_STRING_CONNECT_CAMERA_DETECTED = R.string.connect_camera_detected
         const val ID_STRING_CONNECT_CAMERA_SEARCH_REQUEST = R.string.connect_camera_search_request
@@ -27,6 +28,7 @@ interface ICameraConstantConvert
         const val ID_STRING_CONNECT_WAIT_REPLY_CAMERA = R.string.connect_camera_wait_reply
         const val ID_STRING_CONNECT_CAMERA_RECEIVED_REPLY = R.string.connect_camera_received_reply
         const val ID_STRING_CONNECT_CAMERA_REJECTED = R.string.connect_camera_rejected
+        const val ID_STRING_CONNECT_UNKNOWN_MESSAGE = R.string.connect_receive_unknown_message
 
 
         const val ID_PREFERENCE_THETA_LIVEVIEW_RESOLUTION = IPreferencePropertyAccessor.THETA_LIVEVIEW_RESOLUTION
index a5696f2..af3dfff 100644 (file)
@@ -1,18 +1,18 @@
 package jp.osdn.gokigen.mangle.scene
 
 import androidx.appcompat.app.AppCompatActivity
-import jp.osdn.gokigen.gokigenassets.camera.CameraPreference
-import jp.osdn.gokigen.gokigenassets.camera.CameraPreferenceKeySet
+import jp.osdn.gokigen.gokigenassets.camera.preference.CameraPreference
+import jp.osdn.gokigen.gokigenassets.camera.preference.CameraPreferenceKeySet
 import jp.osdn.gokigen.gokigenassets.camera.DummyCameraControl
-import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
-import jp.osdn.gokigen.gokigenassets.camera.camerax.operation.CameraControl
+import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.operation.CameraControl
 import jp.osdn.gokigen.gokigenassets.camera.console.ConsolePanelControl
 import jp.osdn.gokigen.gokigenassets.camera.example.ExamplePictureControl
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
-import jp.osdn.gokigen.gokigenassets.camera.panasonic.wrapper.PanasonicCameraControl
-import jp.osdn.gokigen.gokigenassets.camera.ricohpentax.RicohPentaxCameraControl
-import jp.osdn.gokigen.gokigenassets.camera.sony.SonyCameraControl
-import jp.osdn.gokigen.gokigenassets.camera.theta.ThetaCameraControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.wrapper.PanasonicCameraControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.RicohPentaxCameraControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.SonyCameraControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.theta.ThetaCameraControl
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConnectionMethods.Companion.PREFERENCE_CAMERA_METHOD_CAMERAX
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConnectionMethods.Companion.PREFERENCE_CAMERA_METHOD_CONSOLE
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConnectionMethods.Companion.PREFERENCE_CAMERA_METHOD_EXAMPLE
index 6c2b423..d3a33d1 100644 (file)
@@ -10,7 +10,7 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import jp.osdn.gokigen.gokigenassets.liveview.LiveImageViewFragment
 import jp.osdn.gokigen.gokigenassets.preference.MainPreferenceFragment
 import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
-import jp.osdn.gokigen.gokigenassets.camera.camerax.preview.PreviewFragment
+import jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.preview.PreviewFragment
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraControl
 import jp.osdn.gokigen.gokigenassets.scene.IChangeSceneBasic
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
index b21ffec..5b3c40a 100644 (file)
     <string name="connect_connect">接続</string>
     <string name="connect_connecting">接続中&#8230;</string>
     <string name="connect_connected">接続完了</string>
+    <string name="connect_connect_finished">接続完了.</string>
     <string name="connect_change_run_mode">モード変更</string>
     <string name="connect_restore_camera_settings">カメラ設定調整</string>
     <string name="connect_camera_detected">カメラ発見</string>
     <string name="connect_camera_wait_reply">カメラ応答待ち</string>
     <string name="connect_camera_received_reply">カメラ応答受信</string>
     <string name="connect_camera_rejected">カメラ接続拒否</string>
+    <string name="connect_receive_unknown_message">未定義メッセージを受信</string>
 
     <string name="camera_not_found">カメラが見つかりませんでした&#8230;</string>
     <string name="camera_connect_response_ng">カメラに接続できませんでした。</string>
index b7687af..1530834 100644 (file)
     <string name="connect_connect">connecting</string>
     <string name="connect_connecting">connecting&#8230;</string>
     <string name="connect_connected">connected</string>
+    <string name="connect_connect_finished">connect finished.</string>
     <string name="connect_change_run_mode">changeRunMode</string>
     <string name="connect_restore_camera_settings">restoreCameraSettings</string>
     <string name="connect_camera_detected">Detected a camera</string>
     <string name="connect_camera_found">Found a camera</string>
     <string name="connect_camera_wait_reply">Wait reply from a camera</string>
     <string name="connect_camera_received_reply">Received reply from a camera</string>
+    <string name="connect_receive_unknown_message">Received a unknown message.</string>
 
     <string name="camera_not_found">Not Found&#8230;</string>
     <string name="camera_connect_response_ng">Camera replies NG.</string>