From: MRSa Date: Fri, 8 Oct 2021 15:13:40 +0000 (+0900) Subject: OPC機のAFロック状態を表示できるようにした。 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fb54d659b19c4f55eaf8081b068632bbf1a3446f;p=gokigen%2Fmangle.git OPC機のAFロック状態を表示できるようにした。 --- diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/OmdsCameraControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/OmdsCameraControl.kt index 0a2424a..e3dc7b7 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/OmdsCameraControl.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/OmdsCameraControl.kt @@ -156,6 +156,7 @@ class OmdsCameraControl(private val context: AppCompatActivity, private val vibr Log.v(TAG, "injectDisplay()") focusControl = OmdsFocusControl(frameDisplayer, indicator) captureControl = OmdsCaptureControl(frameDisplayer, indicator, statusChecker) + statusChecker.setIOpcFocusLockResult(focusControl.getFocusLockResult()) } override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { } diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/IOpcFocusLockResult.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/IOpcFocusLockResult.kt new file mode 100644 index 0000000..fd7258e --- /dev/null +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/IOpcFocusLockResult.kt @@ -0,0 +1,7 @@ +package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation + +interface IOpcFocusLockResult +{ + fun focusResult(isFocusLocked : Boolean) + +} \ No newline at end of file diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsAutoFocusControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsAutoFocusControl.kt index 61e0970..c53f593 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsAutoFocusControl.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsAutoFocusControl.kt @@ -11,10 +11,11 @@ import java.lang.Exception import java.util.* import kotlin.math.floor -class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, private val indicator: IIndicatorControl, userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10") : IOmdsProtocolNotify +class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, private val indicator: IIndicatorControl, userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10") : IOmdsProtocolNotify, IOpcFocusLockResult { private val headerMap: MutableMap = HashMap() private val http = SimpleHttpClient() + private lateinit var preFocusFrameRect : RectF private var useOpcProtocol = false fun lockAutoFocus(point: PointF) @@ -41,7 +42,7 @@ class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, p e.printStackTrace() try { - val preFocusFrameRect = getPreFocusFrameRect(point) + preFocusFrameRect = getPreFocusFrameRect(point) showFocusFrame(preFocusFrameRect, IAutoFocusFrameDisplay.FocusFrameStatus.Errored, 1.0) } catch (ee: Exception) @@ -60,7 +61,7 @@ class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, p private fun lockCommandOmds(point: PointF) { - val preFocusFrameRect = getPreFocusFrameRect(point) + preFocusFrameRect = getPreFocusFrameRect(point) try { // AF駆動前にAF UNLOCK @@ -99,7 +100,7 @@ class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, p private fun lockCommandOpc(point: PointF) { - val preFocusFrameRect = getPreFocusFrameRect(point) + preFocusFrameRect = getPreFocusFrameRect(point) try { val releaseUrl = executeUrl + AF_UNLOCK_COMMAND_OPC @@ -252,6 +253,29 @@ class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, p useOpcProtocol = opcProtocol } + override fun focusResult(isFocusLocked: Boolean) + { + try + { + if (isFocusLocked) + { + // AF FOCUSED + Log.v(TAG, "focusResult() : FOCUSED") + showFocusFrame(preFocusFrameRect, IAutoFocusFrameDisplay.FocusFrameStatus.Focused, 0.0) + } + else + { + // AF FOCUS FAILURE + Log.v(TAG, "focusResult() : ERROR") + showFocusFrame(preFocusFrameRect, IAutoFocusFrameDisplay.FocusFrameStatus.Failed, 1.0) + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + init { headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share" diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCameraStatusWatcher.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCameraStatusWatcher.kt index 127a5ea..e33e7e6 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCameraStatusWatcher.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCameraStatusWatcher.kt @@ -6,16 +6,13 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusUpdateNotify import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusWatcher import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.IOmdsProtocolNotify +import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.IOpcFocusLockResult import jp.osdn.gokigen.gokigenassets.liveview.message.IMessageDrawer import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleLogDumper import java.io.ByteArrayOutputStream -import java.io.InputStream import java.lang.Exception -import java.net.HttpURLConnection -import java.net.ServerSocket import java.net.Socket -import java.net.URL import java.util.* import kotlin.collections.ArrayList @@ -24,6 +21,7 @@ class OmdsCameraStatusWatcher(userAgent: String = "OlympusCameraKit", private va private val headerMap: MutableMap = HashMap() private val http = SimpleHttpClient() + private var focusLockResult : IOpcFocusLockResult? = null private var useOpcProtocol = false private var buffer: ByteArray? = null @@ -31,7 +29,6 @@ class OmdsCameraStatusWatcher(userAgent: String = "OlympusCameraKit", private va private var isWatchingEvent = false private var whileEventReceive = false private var statusReceived = false - private var omdsCommandList : String = "" private var latestEventResponse : String = "" private var currentTakeMode = "" @@ -61,11 +58,6 @@ class OmdsCameraStatusWatcher(userAgent: String = "OlympusCameraKit", private va override fun setOmdsCommandList(commandList: String) { - omdsCommandList = commandList - - val commandListParser = OmdsCommandListParser() - commandListParser.startParse(omdsCommandList) - startStatusWatch(null, null) } @@ -96,6 +88,10 @@ class OmdsCameraStatusWatcher(userAgent: String = "OlympusCameraKit", private va } } + fun setIOpcFocusLockResult(lockResult: IOpcFocusLockResult?) + { + focusLockResult = lockResult + } private fun startEventWatch(portNumber: Int = 65000) { @@ -176,10 +172,33 @@ class OmdsCameraStatusWatcher(userAgent: String = "OlympusCameraKit", private va readIndex += readBytes byteStream.write(byteArray, 0, readBytes) } - if (isDumpLog) + val dataString = byteStream.toString() + if (dataString.indexOf("") >= 0) + { + if ((dataString.indexOf("ok") >= 0)&&(dataString.indexOf("") >= 0)) + { + // Focus Locked + focusLockResult?.focusResult(true) + Log.v(TAG, " FOCUS OK! ") + } + else if ((dataString.indexOf("ng") >= 0)||(dataString.indexOf("none") >= 0)) + { + Log.v(TAG, " FOCUS NG... ") + focusLockResult?.focusResult(false) + } + else + { + Log.v(TAG, " --- RECEIVE OPC EVENT $dataString ---") + } + } + else { - SimpleLogDumper.dumpBytes("[RX EVT(OPC):$dataBytes]", byteStream.toByteArray()) + Log.v(TAG, " RECEIVE OPC EVENT $dataString") } + //if (isDumpLog) + //{ + // SimpleLogDumper.dumpBytes("[RX EVT(OPC):$dataBytes]", byteStream.toByteArray()) + //} } else { @@ -1088,8 +1107,8 @@ class OmdsCameraStatusWatcher(userAgent: String = "OlympusCameraKit", private va private val TAG = OmdsCameraStatusWatcher::class.java.simpleName // TIMEOUT VALUES - private const val SLEEP_TIME_MS = 250 - private const val SLEEP_EVENT_TIME_MS = 350 + private const val SLEEP_TIME_MS = 300 + private const val SLEEP_EVENT_TIME_MS = 500 private const val TIMEOUT_MS = 2500 private const val RECEIVE_BUFFER_SIZE = 16384 diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCommandListParser.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCommandListParser.kt deleted file mode 100644 index df8f99c..0000000 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCommandListParser.kt +++ /dev/null @@ -1,69 +0,0 @@ -package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.status - -import android.util.Log - -class OmdsCommandListParser -{ - fun startParse(targetData: String) - { - try - { -/* - - var parsedData = targetData - val parser: XmlPullParser = Xml.newPullParser() - parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false) - parser.setInput(StringReader(targetData)) - var eventType = parser.eventType - while (eventType != XmlPullParser.END_DOCUMENT) - { - when (eventType) { - XmlPullParser.START_DOCUMENT -> { } - XmlPullParser.START_TAG -> { - //parsedData += " [${parser.name}(${parser.attributeCount}) " - parsedData += "[" - if (parser.attributeCount > 0) - { - parsedData += "${parser.getAttributeValue(0)} " - } - } - XmlPullParser.END_TAG -> { parsedData += "] " } - else -> { } - } - eventType = parser.next() - } -*/ - if (isDumpLog) - { - val parsedData = targetData - Log.v(TAG, " ------------------------------------------ ") - Log.v(TAG, " <<< COMMAND LIST >>>") - for (pos in 0..parsedData.length step 768) - { - val lastIndex = if ((pos + 768) > parsedData.length) - { - parsedData.length - } - else - { - pos + 768 - } - Log.v(TAG, " ${parsedData.substring(pos, lastIndex)}") - } - Log.v(TAG, " ------------------------------------------ ") - } - } - catch (e: Exception) - { - e.printStackTrace() - } - - } - - companion object - { - private val TAG = OmdsCommandListParser::class.java.simpleName - private const val isDumpLog = false - } - -} \ No newline at end of file diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsFocusControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsFocusControl.kt index 985fe27..6780cec 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsFocusControl.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsFocusControl.kt @@ -5,6 +5,7 @@ import android.util.Log import android.view.MotionEvent import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.IOmdsProtocolNotify +import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.IOpcFocusLockResult import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.OmdsAutoFocusControl import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay @@ -74,6 +75,11 @@ class OmdsFocusControl(private val frameDisplay: IAutoFocusFrameDisplay, indicat afControl.detectedOpcProtocol(opcProtocol) } + fun getFocusLockResult() : IOpcFocusLockResult + { + return (afControl) + } + companion object { private val TAG = OmdsFocusControl::class.java.simpleName