Compare commits
3 Commits
e0fa019d20
...
4ccfad3911
Author | SHA1 | Date |
---|---|---|
Christopher Arndt | 4ccfad3911 | |
Christopher Arndt | b28d4fbfa6 | |
Christopher Arndt | b8d5119d03 |
|
@ -1,32 +1,30 @@
|
||||||
import std/strformat
|
|
||||||
|
|
||||||
import jacket
|
import jacket
|
||||||
|
|
||||||
var client: ClientTPtr
|
var jclient: ClientTPtr
|
||||||
var time: TimeT
|
var time: TimeT
|
||||||
var status: cint
|
var status: cint
|
||||||
|
|
||||||
client = clientOpen("test_jacket", ord(NullOption), addr status)
|
jclient = clientOpen("test_jacket", NullOption.ord, addr status)
|
||||||
|
|
||||||
echo fmt"Server status: {status}"
|
echo "Server status: " & $status
|
||||||
|
|
||||||
if client == nil:
|
if jclient == nil:
|
||||||
echo getJackStatusErrorString(status)
|
echo getJackStatusErrorString(status)
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
time = getTime()
|
time = getTime()
|
||||||
var ver = getVersionString()
|
let ver = getVersionString()
|
||||||
echo fmt"JACK version: {ver}"
|
echo "JACK version: " & $ver
|
||||||
var rate = getSampleRate(client)
|
let rate = getSampleRate(jclient)
|
||||||
echo fmt"Sample rate: {rate}"
|
echo "Sample rate: " & $rate
|
||||||
var bufsize = getBufferSize(client)
|
let bufsize = getBufferSize(jclient)
|
||||||
echo fmt"Buffer size: {bufsize}"
|
echo "Buffer size: " & $bufsize
|
||||||
var load = cpuLoad(client)
|
let load = cpuLoad(jclient)
|
||||||
echo fmt"DSP load: {load}%"
|
echo "DSP load: " & $load & "%"
|
||||||
echo fmt"Server time: {time}"
|
echo "Server time: " & $time
|
||||||
var name = getClientName(client)
|
let name = getClientName(jclient)
|
||||||
echo fmt"Client name: {name}"
|
echo "Client name: " & $name
|
||||||
var rt = if isRealtime(client) > 0: "yes" else: "no"
|
let rt = if isRealtime(jclient) > 0: "yes" else: "no"
|
||||||
echo fmt"RT enabled: {rt}"
|
echo "RT enabled: " & rt
|
||||||
|
|
||||||
discard clientClose(client)
|
discard clientClose(jclient)
|
||||||
|
|
|
@ -1,55 +1,53 @@
|
||||||
import std/[strformat, os]
|
import std/os
|
||||||
|
|
||||||
import jacket
|
import jacket
|
||||||
|
|
||||||
var client: ClientTPtr
|
var jclient: ClientTPtr
|
||||||
var status: cint
|
var status: cint
|
||||||
|
|
||||||
proc cleanup() {.noconv.} =
|
proc cleanup() {.noconv.} =
|
||||||
echo "Cleaning up..."
|
echo "Cleaning up..."
|
||||||
|
|
||||||
if client != nil:
|
if jclient != nil:
|
||||||
discard deactivate(client)
|
discard deactivate(jclient)
|
||||||
discard clientClose(client)
|
discard clientClose(jclient)
|
||||||
client = nil
|
jclient = nil
|
||||||
|
|
||||||
quit 0
|
quit 0
|
||||||
|
|
||||||
proc portConnected(portA: PortIdT; portB: PortIdT; connect: cint; arg: pointer) {.cdecl.} =
|
proc portConnected(portA: PortIdT; portB: PortIdT; connect: cint; arg: pointer) {.cdecl.} =
|
||||||
let portAPtr = portById(client, portA)
|
let portAPtr = portById(jclient, portA)
|
||||||
let portBPtr = portById(client, portB)
|
let portBPtr = portById(jclient, portB)
|
||||||
|
|
||||||
if portAPtr != nil:
|
if portAPtr != nil:
|
||||||
let portAName = portName(portAPtr)
|
echo "Port A: " & $portName(portAPtr)
|
||||||
echo fmt"Port A: {portAName}"
|
|
||||||
else:
|
else:
|
||||||
echo "Port A: <unknown>"
|
echo "Port A: <unknown>"
|
||||||
|
|
||||||
if portAPtr != nil:
|
if portAPtr != nil:
|
||||||
let portBName = portName(portBPtr)
|
echo "Port B: " & $portName(portBPtr)
|
||||||
echo fmt"Port B: {portBName}"
|
|
||||||
else:
|
else:
|
||||||
echo "Port B: <unknown>"
|
echo "Port B: <unknown>"
|
||||||
|
|
||||||
let action = if connect > 0: "connect" else: "disconnect"
|
echo "Action: " & (if connect > 0: "connect" else: "disconnect")
|
||||||
echo fmt"Action: {action}"
|
|
||||||
|
|
||||||
|
|
||||||
client = clientOpen("jacket_port_register", ord(NoStartServer) or ord(UseExactName), addr status)
|
jclient = clientOpen("jacket_port_register", NoStartServer.ord, addr status)
|
||||||
|
|
||||||
echo fmt"Server status: {status}"
|
echo "Server status: " & $status
|
||||||
|
|
||||||
if client == nil:
|
if jclient == nil:
|
||||||
echo getJackStatusErrorString(status)
|
echo getJackStatusErrorString(status)
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
discard portRegister(client, "in_1", JACK_DEFAULT_AUDIO_TYPE, ord(PortIsInput), 0)
|
setControlCHook(cleanup)
|
||||||
discard portRegister(client, "out_1", JACK_DEFAULT_AUDIO_TYPE, ord(PortIsOutput), 0)
|
|
||||||
|
|
||||||
if setPortConnectCallback(client, portConnected, nil) != 0:
|
discard portRegister(jclient, "in_1", JACK_DEFAULT_AUDIO_TYPE, PortIsInput.ord, 0)
|
||||||
|
discard portRegister(jclient, "out_1", JACK_DEFAULT_AUDIO_TYPE, PortIsOutput.ord, 0)
|
||||||
|
|
||||||
|
if setPortConnectCallback(jclient, portConnected, nil) != 0:
|
||||||
echo "Error: could not set port connection callback."
|
echo "Error: could not set port connection callback."
|
||||||
|
|
||||||
discard activate(client)
|
discard activate(jclient)
|
||||||
|
|
||||||
while true:
|
while true:
|
||||||
sleep(50)
|
sleep(50)
|
||||||
|
|
|
@ -1,30 +1,31 @@
|
||||||
import std/[strformat, os]
|
import std/os
|
||||||
|
|
||||||
import jacket
|
import jacket
|
||||||
|
|
||||||
var client: ClientTPtr
|
var jclient: ClientTPtr
|
||||||
var status: cint
|
var status: cint
|
||||||
|
|
||||||
proc cleanup() {.noconv.} =
|
proc cleanup() {.noconv.} =
|
||||||
echo "Cleaning up..."
|
echo "Cleaning up..."
|
||||||
if client != nil:
|
|
||||||
discard clientClose(client)
|
if jclient != nil:
|
||||||
client = nil
|
discard clientClose(jclient)
|
||||||
|
jclient = nil
|
||||||
|
|
||||||
quit 0
|
quit 0
|
||||||
|
|
||||||
|
|
||||||
client = clientOpen("jacket_port_register", ord(NoStartServer) or ord(UseExactName), addr status)
|
jclient = clientOpen("jacket_port_register", NoStartServer.ord or UseExactName.ord, addr status)
|
||||||
|
|
||||||
echo fmt"Server status: {status}"
|
echo "Server status: " & $status
|
||||||
|
|
||||||
if client == nil:
|
if jclient == nil:
|
||||||
echo getJackStatusErrorString(status)
|
echo getJackStatusErrorString(status)
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
setControlCHook(cleanup)
|
setControlCHook(cleanup)
|
||||||
|
|
||||||
discard portRegister(client, "in_1", JACK_DEFAULT_AUDIO_TYPE, ord(PortIsInput), 0)
|
discard portRegister(jclient, "in_1", JACK_DEFAULT_AUDIO_TYPE, PortIsInput.ord, 0)
|
||||||
discard portRegister(client, "out_1", JACK_DEFAULT_AUDIO_TYPE, ord(PortIsOutput), 0)
|
discard portRegister(jclient, "out_1", JACK_DEFAULT_AUDIO_TYPE, PortIsOutput.ord, 0)
|
||||||
|
|
||||||
while true:
|
while true:
|
||||||
sleep(50)
|
sleep(50)
|
||||||
|
|
58
jacket.nim
58
jacket.nim
|
@ -457,37 +457,33 @@ proc setInfoFunction*(infoCallback: JackInfoCallback) {.importc: "jack_set_info_
|
||||||
|
|
||||||
proc getJackStatusErrorString*(status: cint): string =
|
proc getJackStatusErrorString*(status: cint): string =
|
||||||
# Get JACK error status as string.
|
# Get JACK error status as string.
|
||||||
if status == ord(Success):
|
if status == Success.ord:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
var errorString = ""
|
if status == Failure.ord:
|
||||||
|
|
||||||
if status == ord(Failure):
|
|
||||||
# Only include this generic message if no other error status is set
|
# Only include this generic message if no other error status is set
|
||||||
errorString = "Overall operation failed"
|
result = "Overall operation failed"
|
||||||
if (status and ord(InvalidOption)) > 0:
|
if (status and InvalidOption.ord) > 0:
|
||||||
errorString &= "\nThe operation contained an invalid and unsupported option"
|
result.add("\nThe operation contained an invalid and unsupported option")
|
||||||
if (status and ord(NameNotUnique)) > 0:
|
if (status and NameNotUnique.ord) > 0:
|
||||||
errorString &= "\nThe desired client name was not unique"
|
result.add("\nThe desired client name was not unique")
|
||||||
if (status and ord(ServerStarted)) > 0:
|
if (status and ServerStarted.ord) > 0:
|
||||||
errorString &= "\nThe JACK server was started as a result of this operation"
|
result.add("\nThe JACK server was started as a result of this operation")
|
||||||
if (status and ord(ServerFailed)) > 0:
|
if (status and ServerFailed.ord) > 0:
|
||||||
errorString &= "\nUnable to connect to the JACK server"
|
result.add("\nUnable to connect to the JACK server")
|
||||||
if (status and ord(ServerError)) > 0:
|
if (status and ServerError.ord) > 0:
|
||||||
errorString &= "\nCommunication error with the JACK server"
|
result.add("\nCommunication error with the JACK server")
|
||||||
if (status and ord(NoSuchClient)) > 0:
|
if (status and NoSuchClient.ord) > 0:
|
||||||
errorString &= "\nRequested client does not exist"
|
result.add("\nRequested client does not exist")
|
||||||
if (status and ord(LoadFailure)) > 0:
|
if (status and LoadFailure.ord) > 0:
|
||||||
errorString &= "\nUnable to load internal client"
|
result.add("\nUnable to load internal client")
|
||||||
if (status and ord(InitFailure)) > 0:
|
if (status and InitFailure.ord) > 0:
|
||||||
errorString &= "\nUnable to initialize client"
|
result.add("\nUnable to initialize client")
|
||||||
if (status and ord(ShmFailure)) > 0:
|
if (status and ShmFailure.ord) > 0:
|
||||||
errorString &= "\nUnable to access shared memory"
|
result.add("\nUnable to access shared memory")
|
||||||
if (status and ord(VersionError)) > 0:
|
if (status and VersionError.ord) > 0:
|
||||||
errorString &= "\nClient's protocol version does not match"
|
result.add("\nClient's protocol version does not match")
|
||||||
if (status and ord(BackendError)) > 0:
|
if (status and BackendError.ord) > 0:
|
||||||
errorString &= "\nBackend Error"
|
result.add("\nBackend Error")
|
||||||
if (status and ord(ClientZombie)) > 0:
|
if (status and ClientZombie.ord) > 0:
|
||||||
errorString &= "\nClient is being shutdown against its will"
|
result.add("\nClient is being shutdown against its will")
|
||||||
|
|
||||||
return errorString
|
|
||||||
|
|
Loading…
Reference in New Issue