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?) { }
--- /dev/null
+package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation
+
+interface IOpcFocusLockResult
+{
+ fun focusResult(isFocusLocked : Boolean)
+
+}
\ No newline at end of file
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<String, String> = HashMap()
private val http = SimpleHttpClient()
+ private lateinit var preFocusFrameRect : RectF
private var useOpcProtocol = false
fun lockAutoFocus(point: PointF)
e.printStackTrace()
try
{
- val preFocusFrameRect = getPreFocusFrameRect(point)
+ preFocusFrameRect = getPreFocusFrameRect(point)
showFocusFrame(preFocusFrameRect, IAutoFocusFrameDisplay.FocusFrameStatus.Errored, 1.0)
}
catch (ee: Exception)
private fun lockCommandOmds(point: PointF)
{
- val preFocusFrameRect = getPreFocusFrameRect(point)
+ preFocusFrameRect = getPreFocusFrameRect(point)
try
{
// AF駆動前にAF UNLOCK
private fun lockCommandOpc(point: PointF)
{
- val preFocusFrameRect = getPreFocusFrameRect(point)
+ preFocusFrameRect = getPreFocusFrameRect(point)
try
{
val releaseUrl = executeUrl + AF_UNLOCK_COMMAND_OPC
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"
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
private val headerMap: MutableMap<String, String> = HashMap()
private val http = SimpleHttpClient()
+ private var focusLockResult : IOpcFocusLockResult? = null
private var useOpcProtocol = false
private var buffer: ByteArray? = null
private var isWatchingEvent = false
private var whileEventReceive = false
private var statusReceived = false
- private var omdsCommandList : String = ""
private var latestEventResponse : String = ""
private var currentTakeMode = ""
override fun setOmdsCommandList(commandList: String)
{
- omdsCommandList = commandList
-
- val commandListParser = OmdsCommandListParser()
- commandListParser.startParse(omdsCommandList)
-
startStatusWatch(null, null)
}
}
}
+ fun setIOpcFocusLockResult(lockResult: IOpcFocusLockResult?)
+ {
+ focusLockResult = lockResult
+ }
private fun startEventWatch(portNumber: Int = 65000)
{
readIndex += readBytes
byteStream.write(byteArray, 0, readBytes)
}
- if (isDumpLog)
+ val dataString = byteStream.toString()
+ if (dataString.indexOf("<root><result>") >= 0)
+ {
+ if ((dataString.indexOf("ok") >= 0)&&(dataString.indexOf("<location>") >= 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
{
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
+++ /dev/null
-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
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
afControl.detectedOpcProtocol(opcProtocol)
}
+ fun getFocusLockResult() : IOpcFocusLockResult
+ {
+ return (afControl)
+ }
+
companion object
{
private val TAG = OmdsFocusControl::class.java.simpleName