commit 07/10/2025

This commit is contained in:
2025-10-07 14:18:00 +07:00
parent 1c72c7577f
commit d04a8bedd1
5 changed files with 91 additions and 27 deletions

View File

@@ -13,7 +13,7 @@ import java.time.LocalDateTime
* @param broadcastzones The zones to which the paging is broadcasted, is a semicolon-separated string.
*/
class PagingJob(val fromIP: String, val broadcastzones: String) {
val filePath : Path = PagingResult_directory.resolve(LocalDateTime.now().format(filenameformat)+"_RAW.wav")
val filePath : Path = PagingResult_directory.resolve("PAGING_"+fromIP+"_"+LocalDateTime.now().format(filenameformat)+".wav")
private val bos : ByteArrayOutputStream = ByteArrayOutputStream()
var totalBytesReceived = 0; private set
var isRunning = true; private set
@@ -25,7 +25,6 @@ class PagingJob(val fromIP: String, val broadcastzones: String) {
* @param length The number of bytes to write from the data array.
*/
fun addData(data: ByteArray, length: Int) {
Logger.info{"PagingJob from $fromIP, zones: $broadcastzones, received $length bytes"}
bos.write(data, 0, length)
totalBytesReceived += length
}

View File

@@ -66,12 +66,10 @@ class TCP_Android_Command_Server {
din.read(bb)
// B4A format, 4 bytes di depan adalah size
val str = String(bb, 4, bb.size - 4)
println("Received from $key : $str")
str.split("@").map { it.trim() }.filter { ValidString(it) }
.forEach {
process_command(key,it) { reply ->
try {
println("Reply to $key : ${reply.length} bytes")
dout.write(String_to_Byte_Android(reply))
} catch (e: Exception) {
logcb.accept("Failed to send reply to $key, Message : $e")
@@ -155,12 +153,13 @@ class TCP_Android_Command_Server {
}
"PCMFILE_START","STARTPAGINGAND" -> {
val zones = parts.getOrElse(3) { "" }.replace(",",";")
val zones = parts.getOrElse(1) { "" }.replace(",",";")
if (ValidString(zones)){
// create pagingjob
val pj = PagingJob(key, zones)
// masukin ke list
listOnGoingPaging[key] = pj
Logger.info{"PagingJob created for Android $key, zones: $zones, file: ${pj.filePath.absolutePathString()}"}
// start minta data dari udpreceiver
udpreceiver.RequestDataFrom(key){
@@ -184,10 +183,12 @@ class TCP_Android_Command_Server {
// get remaining data
val data = pj.GetData()
pj.Close()
audioPlayer.WavWriter(data, pj.filePath.absolutePathString()){
Logger.info{"Paging job closed from Android $key, total bytes received ${data.size}, writing to file ${pj.filePath.absolutePathString()}"}
audioPlayer.WavWriter(data, pj.filePath.absolutePathString(), true){
success, message ->
if (success){
// insert to paging queue
val qp = QueuePaging(
0u,
LocalDateTime.now().format(datetimeformat1),
@@ -235,14 +236,10 @@ class TCP_Android_Command_Server {
// pengiriman variabel ke Android
val username = parts.getOrElse(1) { "" }
if (ValidString(username)){
println("Initialize request from $key with username $username")
val userlogin = listUserLogin.find { it.username == username }
if (userlogin != null){
println("User $username found in listUserLogin")
val userdb = db.userDB.List.find { it.username == username }
if (userdb != null){
println("User $username found in userDB")
println(userdb)
val result = StringBuilder()
result.append("ZONE")
userdb.broadcastzones.split(";").map { it.trim() }.filter { it.isNotBlank() }.forEach {
@@ -322,8 +319,6 @@ class TCP_Android_Command_Server {
// send to sender
cb.accept(result.toString())
println("Result so far: $result")
println("Result size: ${result.length} bytes")
result.clear()
//Append MSG, for Android only Indonesia and English
@@ -365,11 +360,8 @@ class TCP_Android_Command_Server {
result.append("VARPROCEDURE;").append(index).append(";").append(soundbank.TAG).append(";").append(soundbank.Description).append("@")
}
// send to sender
println("Final Result: $result")
println("Final Result size: ${result.length} bytes")
cb.accept(result.toString())
logcb.accept("All variables sent to $key with username $username")
return
} else logcb.accept("STARTINITIALIZE failed from $key with username $username not found in userDB")
} else logcb.accept("STARTINITIALIZE failed from $key with unregistered username $username")