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.utils.communication.SimpleLogDumper
import java.util.ArrayList
import kotlin.math.pow
-class CameraStatusConvert(private val statusHolder: CameraStatusHolder) : ICameraStatus, ICameraEventObserver
+class CameraStatusConvert(private val statusHolder: CameraStatusHolder, remote: IPanasonicCamera) : ICameraStatus, ICameraEventObserver
{
// 現物合わせのクラス...
+ private val statusListHolder = CameraStatusListHolder(remote)
private var eventData: ByteArray? = null
private var currentBattery : Int = 0
{
try
{
- val listKey = key + "List"
- return statusHolder.getAvailableItemList(listKey)
+ return statusListHolder.getAvailableItemList(key)
}
catch (e: Exception)
{
{
try
{
- Log.v(TAG, " setStatus(key:$key, value:$value)")
+ statusListHolder.setStatus(key, value)
}
catch (e : Exception)
{
{
try
{
- val value3 = if (value2 < 0) { value2 * (-1) } else { value2 }
-
+ // val value3 = if (value2 < 0) { value2 * (-1) } else { value2 }
}
catch (e : Exception)
{
private fun getCaptureMode() : String
{
- return ("")
+ // フォトスタイル設定
+ var photoStyle = ""
+ try
+ {
+ val index = 16 * 7 - 1
+ if ((eventData != null)&&((eventData?.size ?: 0) > (index)))
+ {
+ val value = (eventData?.get(index) ?: 0).toInt()
+ if (value != 0)
+ {
+ photoStyle = when (value) {
+ 1 -> "STANDARD"
+ 2 -> "VIVID"
+ 3 -> "NATURAL"
+ 4 -> "MONO"
+ 5 -> "SCENERY"
+ 6 -> "PORTRAIT"
+ 7 -> "CUSTOM"
+ 12 -> "L.MONO"
+ else -> "($value)"
+ }
+ }
+ }
+ }
+ catch (e : Exception)
+ {
+ e.printStackTrace()
+ }
+ return (photoStyle)
}
private fun getIsoSensitivity() : String
private fun getPictureEffect() : String
{
- return ("")
+ // フィルター設定
+ var pictureEffect = ""
+ try
+ {
+ val index = 16 * 10 + 10
+ if ((eventData != null)&&((eventData?.size ?: 0) > (index)))
+ {
+ val value = (eventData?.get(index) ?: 0).toInt()
+ if (value != 0)
+ {
+ pictureEffect = when (value) {
+ 1 -> "POP"
+ 2 -> "RETR"
+ 15 -> "OLD"
+ 3 -> "HKEY"
+ 4 -> "LKEY"
+ 5 -> "SEPI"
+ 22 -> "MONO"
+ 10 -> "D.MONO"
+ 21 -> "R.MONO"
+ 20 -> "S.MONO"
+ 11 -> "IART"
+ 6 -> "HDYN"
+ 12 -> "XPRO"
+ 8 -> "TOY"
+ 18 -> "TOYP"
+ 17 -> "BLEA"
+ 7 -> "DIOR"
+ 9 -> "SOFT"
+ 19 -> "FAN"
+ 14 -> "STAR"
+ 13 -> "1CLR"
+ 16 -> "SUN"
+ else -> "($value)"
+ }
+ }
+ }
+ }
+ catch (e : Exception)
+ {
+ e.printStackTrace()
+ }
+ return (pictureEffect)
}
private fun getTorchMode() : String
try
{
this.eventData = eventData
- //val size = this.eventData?.size ?: 0
- //Log.v(TAG, " ----- RECEIVED STATUS $size bytes. ----- ")
- //SimpleLogDumper.dumpBytes("LV DATA [$size]", this.eventData?.copyOfRange(0, size))
+ if (isDumpData)
+ {
+ val size = this.eventData?.size ?: 0
+ Log.v(TAG, " ----- RECEIVED STATUS $size bytes. ----- ")
+ SimpleLogDumper.dumpBytes("LV DATA [$size]", this.eventData?.copyOfRange(0, size))
+ }
}
catch (e: Exception)
{
companion object
{
private val TAG = CameraStatusConvert::class.java.simpleName
+ private const val isDumpData = false
}
}
import jp.osdn.gokigen.gokigenassets.camera.panasonic.ICameraChangeListener
import jp.osdn.gokigen.gokigenassets.camera.panasonic.IPanasonicCamera
import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
-import java.util.ArrayList
class CameraStatusHolder(private val context: Context, private val remote: IPanasonicCamera, private val cardSlotSelector: ICardSlotSelector) : ICardSlotSelectionReceiver, ICameraStatusHolder
{
listener = null
}
- override fun getCameraStatus(): String? {
+ override fun getCameraStatus(): String?
+ {
return null
}
- override fun getLiveviewStatus(): Boolean {
+ override fun getLiveviewStatus(): Boolean
+ {
return false
}
return null
}
- override fun getAvailableShootModes(): List<String?>? {
+ override fun getAvailableShootModes(): List<String?>?
+ {
return null
}
- override fun getZoomPosition(): Int {
+ override fun getZoomPosition(): Int
+ {
return 0
}
- override fun getStorageId(): String {
+ override fun getStorageId(): String
+ {
return currentSd
}
requestToChangeSlot(slotId)
}
}
- /**
- *
- *
- */
- fun getAvailableItemList(key: String): List<String>
- {
- val itemList: MutableList<String> = ArrayList()
- try
- {
-/*
- val array = latestResultObject!!.getJSONArray(key) ?: return itemList
- val nofItems = array.length()
- for (index in 0 until nofItems) {
- try {
- itemList.add(array.getString(index))
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-*/
- }
- catch (e: Exception)
- {
- e.printStackTrace()
- }
- return itemList
- }
-
- fun getItemStatus(key: String): String
- {
-/*
- try
- {
- return latestResultObject!!.getString(key)
- }
- catch (e: Exception)
- {
- e.printStackTrace()
- }
-*/
- return ""
- }
private fun requestToChangeSlot(slotId: String)
{
fun getCurrentStatus(key: String) : String
{
- return (when (key) {
+ return (when (key)
+ {
ICameraStatus.BATTERY -> "$remainBattery"
else -> ""
})
--- /dev/null
+package jp.osdn.gokigen.gokigenassets.camera.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.utils.communication.SimpleHttpClient
+import java.util.ArrayList
+
+class CameraStatusListHolder(private val remote: IPanasonicCamera)
+{
+ val http = SimpleHttpClient()
+ companion object
+ {
+ private val TAG = CameraStatusListHolder::class.java.simpleName
+ private const val TIMEOUT_MS = 3000
+ private const val MAX_RETRY_COUNT = 2
+ }
+
+ /**
+ *
+ *
+ */
+ fun getAvailableItemList(key: String): List<String>
+ {
+ try
+ {
+ return (when (key) {
+ ICameraStatus.TAKE_MODE -> getAvailableTakeMode()
+ ICameraStatus.SHUTTER_SPEED -> getAvailableShutterSpeed()
+ ICameraStatus.APERTURE -> getAvailableAperture()
+ ICameraStatus.EXPREV -> getAvailableExpRev()
+ ICameraStatus.CAPTURE_MODE -> getAvailableCaptureMode()
+ ICameraStatus.ISO_SENSITIVITY -> getAvailableIsoSensitivity()
+ ICameraStatus.WHITE_BALANCE -> getAvailableWhiteBalance()
+ ICameraStatus.AE -> getAvailableMeteringMode()
+ ICameraStatus.EFFECT -> getAvailablePictureEffect()
+ ICameraStatus.TORCH_MODE -> getAvailableTorchMode()
+ //ICameraStatus.BATTERY -> getAvailableRemainBattery()
+ else -> ArrayList()
+ })
+ //Log.v(TAG, " ----- getAvailableItemList($key) ")
+ //sendCamGetSettingCmd("colormode")
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ return (ArrayList())
+ }
+
+ private fun getAvailableTakeMode() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableTorchMode() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableShutterSpeed() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableAperture() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableExpRev() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailablePictureEffect() : List<String>
+ {
+ return (listOf("OFF",
+ "POP",
+ "RETR",
+ "OLD",
+ "HKEY",
+ "LKEY",
+ "SEPI",
+ "MONO",
+ "D.MONO",
+ "R.MONO",
+ "S.MONO",
+ "IART",
+ "HDYN",
+ "XPRO",
+ "TOY",
+ "TOYP",
+ "BLEA",
+ "DIOR",
+ "SOFT",
+ "FAN",
+ "STAR",
+ "1CLR",
+ "SUN"))
+ }
+
+ private fun getAvailableIsoSensitivity() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableWhiteBalance() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableMeteringMode() : List<String>
+ {
+ return (ArrayList())
+ }
+
+ private fun getAvailableCaptureMode() : List<String>
+ {
+ return (listOf("STD", "VIVID", "NATURAL", "MONO", "L.MONO", "SCENERY", "PORTRAIT", "CUSTOM"))
+ }
+
+ fun setStatus(key: String, value: String)
+ {
+ Log.v(TAG, " setStatus(key:$key, value:$value)")
+ try
+ {
+ when (key) {
+ ICameraStatus.TAKE_MODE -> setTakeMode(value)
+ ICameraStatus.SHUTTER_SPEED -> setShutterSpeed(value)
+ ICameraStatus.APERTURE -> setAperture(value)
+ ICameraStatus.EXPREV -> setExpRev(value)
+ ICameraStatus.CAPTURE_MODE -> setCaptureMode(value)
+ ICameraStatus.ISO_SENSITIVITY -> setIsoSensitivity(value)
+ ICameraStatus.WHITE_BALANCE -> setWhiteBalance(value)
+ ICameraStatus.AE -> setMeteringMode(value)
+ ICameraStatus.EFFECT -> setPictureEffect(value)
+ ICameraStatus.TORCH_MODE -> setTorchMode(value)
+ //ICameraStatus.BATTERY -> setRemainBattery(value)
+ else -> return
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+
+ private fun setTakeMode(value: String)
+ {
+
+ }
+
+ private fun setTorchMode(value: String)
+ {
+
+ }
+
+ private fun setShutterSpeed(value: String)
+ {
+
+ }
+
+ private fun setAperture(value: String)
+ {
+
+ }
+
+ private fun setExpRev(value: String)
+ {
+
+ }
+
+ private fun setCaptureMode(value: String)
+ {
+ //Log.v(TAG, " ===== setCaptureMode($value) =====")
+ val setValue = when (value) {
+ "STD" -> "standard"
+ "VIVID" -> "vivid"
+ "NATURAL" -> "natural"
+ "MONO" -> "bw"
+ "L.MONO" -> "l_bw"
+ "SCENERY" -> "scenery"
+ "PORTRAIT" -> "portrait"
+ "CUSTOM" -> "custom"
+ else -> return
+ }
+ sendCamSetSettingCmd("colormode", setValue, null)
+ }
+
+ private fun setIsoSensitivity(value: String)
+ {
+
+ }
+
+ private fun setWhiteBalance(value: String)
+ {
+
+ }
+
+ private fun setMeteringMode(value: String)
+ {
+
+ }
+
+ private fun setPictureEffect(value: String)
+ {
+ val setValue = when (value) {
+ "POP" -> "pop"
+ "RETR" -> "retro"
+ "OLD" -> "old_days"
+ "HKEY" -> "high_key"
+ "LKEY" -> "low_key"
+ "SEPI" -> "sepia"
+ "MONO" -> "monochro"
+ "D.MONO" -> "dynamic_monochro"
+ "R.MONO" -> "rough_monochro"
+ "S.MONO" -> "silky_monochro"
+ "IART" -> "impressive_art"
+ "HDYN" -> "high_dynamic"
+ "XPRO" -> "cross_proc"
+ "TOY" -> "toy_photo"
+ "TOYP" -> "toy_pop"
+ "BLEA" -> "bleach_bypass"
+ "DIOR" -> "diorama"
+ "SOFT" -> "soft_focus"
+ "FAN" -> "fantasy"
+ "STAR" -> "cross_filter"
+ "1CLR" -> "one_point_color"
+ "SUN" -> "sunshine"
+ else -> "noeffect"
+ }
+ sendCamSetSettingCmd("filter_setting", setValue, null)
+ }
+
+ private fun sendCamGetSettingCmd(type: String)
+ {
+ try
+ {
+ val urlToSend = remote.getCmdUrl() + "cam.cgi?mode=getsetting&type=$type"
+ val thread = Thread {
+ try
+ {
+ var retryCount = 0
+ var loop = true
+ while (loop)
+ {
+ val reply: String = http.httpGet(urlToSend, TIMEOUT_MS)
+ if (reply.indexOf("<result>ok</result>") > 0)
+ {
+ loop = false
+ Log.v(TAG, " ===== $urlToSend (OK) : $reply")
+ }
+ else
+ {
+ // エラー発生時は何回か(MAX_RETRY_COUNT分)再送する
+ Log.v(TAG, " $urlToSend (NG) : $reply ")
+ Thread.sleep(1000) // 1秒待つ
+ retryCount++
+ if(retryCount >= MAX_RETRY_COUNT)
+ {
+ loop = false
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+ thread.start()
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+
+ private fun sendCamSetSettingCmd(msgType: String, msgValue: String, value2: String?)
+ {
+ try
+ {
+ //Log.v(TAG, " ------- sendCamSetSettingCmd($msgType, $msgValue, $value2)")
+ val sendMessage = if (value2 != null) { "cam.cgi?mode=setsetting&type=$msgType&value=$msgValue&value2=$value2" } else { "cam.cgi?mode=setsetting&type=$msgType&value=$msgValue" }
+ val thread = Thread {
+ try
+ {
+ var retryCount = 0
+ var loop = true
+ while (loop)
+ {
+ val urlToSend = remote.getCmdUrl() + sendMessage
+ val reply: String = http.httpGet(urlToSend, TIMEOUT_MS)
+ if (reply.indexOf("<result>ok</result>") > 0)
+ {
+ loop = false
+ // Log.v(TAG, " --- SET SETTING ($msgType,$msgValue): $reply")
+ }
+ else
+ {
+ // エラー発生時は何回か(MAX_RETRY_COUNT分)再送する
+ Log.v(TAG, " $urlToSend (NG) : $reply ")
+ Thread.sleep(1000) // 1秒待つ
+ retryCount++
+ if(retryCount >= MAX_RETRY_COUNT)
+ {
+ loop = false
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+ thread.start()
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+}
\ No newline at end of file