<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">
+++ /dev/null
-<?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
<w>liveview</w>
<w>mpget</w>
<w>mpset</w>
+ <w>pixpro</w>
<w>ricoh</w>
</words>
</dictionary>
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
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
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
-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
-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)
{
-package jp.osdn.gokigen.gokigenassets.camera
+package jp.osdn.gokigen.gokigenassets.camera.preference
interface ICameraPreferenceProvider
{
-package jp.osdn.gokigen.gokigenassets.camera
+package jp.osdn.gokigen.gokigenassets.camera.preference
interface ICameraPreferenceUpdater
{
-package jp.osdn.gokigen.gokigenassets.camera.camerax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.operation
import android.util.Log
import android.view.KeyEvent
-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
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
-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
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
{
-package jp.osdn.gokigen.gokigenassets.camera.camerax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.operation
import android.annotation.SuppressLint
import android.graphics.Color
-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.CameraCharacteristics
-package jp.osdn.gokigen.gokigenassets.camera.camerax.preview
+package jp.osdn.gokigen.gokigenassets.camera.vendor.camerax.preview
import android.os.Bundle
import android.view.LayoutInflater
-package jp.osdn.gokigen.gokigenassets.camera.panasonic
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic
interface IPanasonicApiService
{
-package jp.osdn.gokigen.gokigenassets.camera.panasonic
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic
interface IPanasonicCamera
{
-package jp.osdn.gokigen.gokigenassets.camera.panasonic
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
-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
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
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.connection
import android.content.*
import android.net.ConnectivityManager
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
-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
-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
import java.net.DatagramSocket
import java.net.InetSocketAddress
import java.nio.charset.Charset
-import java.util.*
import kotlin.collections.ArrayList
-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.*
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation
import android.content.Context
import androidx.preference.Preference
-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
-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
-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
-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
-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
-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.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
-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
-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,
-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
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.status
interface ICameraEventObserver
{
-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
-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.*
-package jp.osdn.gokigen.gokigenassets.camera.panasonic.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.wrapper
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICardSlotSelectionReceiver
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICardSlotSelector
--- /dev/null
+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
--- /dev/null
+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")
+ }
+}
--- /dev/null
+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()
+ }
+ }
+}
--- /dev/null
+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 ")
+ }
+
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
--- /dev/null
+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)
+ }
+}
--- /dev/null
+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()
+}
--- /dev/null
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command
+
+interface IPixproCommunication
+{
+ fun connect(): Boolean
+ fun disconnect()
+}
--- /dev/null
+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()
+ }
+}
--- /dev/null
+package jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.wrapper.command.messages
+
+interface IPixproCommandCallback
+{
+ fun receivedMessage(id: Int, rx_body: ByteArray?)
+}
--- /dev/null
+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
+
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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)
+ }
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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)
+ }
+
+}
--- /dev/null
+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
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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
+ }
+}
--- /dev/null
+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()
+ }
+ }
+
+}
--- /dev/null
+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()
+ }
+ }
+}
--- /dev/null
+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()
+ }
+ }
+
+}
--- /dev/null
+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?) // エラーが発生して応答したとき
+ }
+}
--- /dev/null
+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
--- /dev/null
+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?) {}
+
+
+}
--- /dev/null
+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()
+ }
+}
-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
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection
interface IUseGR2CommandNotify
{
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection
import android.app.Activity
import android.util.Log
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection
import android.app.Activity
import android.util.Log
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.connection
import android.content.*
import android.net.ConnectivityManager
-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
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
interface IRicohGr2ButtonControl
{
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
interface IRicohGr2CameraStatus
-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
-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
/**
-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
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
import android.content.Context
import androidx.preference.Preference
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
import jp.osdn.gokigen.gokigenassets.camera.interfaces.IZoomLensControl
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraHardwareStatus
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.takepicture
import android.graphics.PointF
import android.graphics.RectF
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.takepicture
import android.util.Log
import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.operation.takepicture
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.operation.takepicture
import android.util.Log
import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.status
import android.graphics.Color
import android.util.Log
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.status
import android.graphics.Color
import android.util.Log
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.wrapper
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraRunMode
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraRunModeCallback
-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
-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.IProgressEvent
-package jp.osdn.gokigen.gokigenassets.camera.ricohpentax.wrapper.playback
+package jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.wrapper.playback
import android.graphics.Bitmap
import android.util.Log
-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
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
-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
-package jp.osdn.gokigen.gokigenassets.camera.sony.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation
import android.content.Context
import androidx.preference.Preference
-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
-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
-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
-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
-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
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
interface ISonyApiService
{
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
interface ISonyCamera
{
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
import org.json.JSONArray
import org.json.JSONObject
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
interface ISonyCameraHolder
{
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
internal class SonyApiService(private val name: String, private val actionUrl: String) : ISonyApiService
{
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
import android.util.Log
import org.json.JSONObject
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper
import android.util.Log
-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
-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
-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
-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
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusHolder
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener
import org.json.JSONObject
-package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.eventlistener
import android.os.Handler
import android.util.Log
-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
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
-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
-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
-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
-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
-package jp.osdn.gokigen.gokigenassets.camera.theta.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.connection
import android.content.*
import android.net.ConnectivityManager
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
-package jp.osdn.gokigen.gokigenassets.camera.theta.connection
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.connection
import android.util.Log
-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
-package jp.osdn.gokigen.gokigenassets.camera.theta.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.operation
interface IOperationCallback
{
-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
-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")
-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
-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
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
interface ICaptureModeReceiver
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
interface IThetaSessionIdNotifier
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
interface IThetaSessionIdProvider
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
interface IThetaStatusHolder
-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")
{
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
import android.graphics.Color
import android.util.Log
-package jp.osdn.gokigen.gokigenassets.camera.theta.status
+package jp.osdn.gokigen.gokigenassets.camera.vendor.theta.status
import android.util.Log
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
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
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
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
<string name="connect_connect">接続</string>
<string name="connect_connecting">接続中…</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">カメラが見つかりませんでした…</string>
<string name="camera_connect_response_ng">カメラに接続できませんでした。</string>
<string name="connect_connect">connecting</string>
<string name="connect_connecting">connecting…</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…</string>
<string name="camera_connect_response_ng">Camera replies NG.</string>