def _createGetServerConfigMsg(self, config: dict):
     logger.debug("MIDI-BLE RESPONSE Get server config - Successful")
     json = jsonpickle.dumps(config)
     gzip = zlib.compress(bytes(json, encoding='utf8'))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x02, 0x00] + sysex_data.encode(gzip)
     return sendMsg
 def _createExportProjSuccessfulMsg(self, proj):
     logger.debug("MIDI-BLE RESPONSE Export project - Successful")
     projJson = jsonpickle.dumps(proj)
     projGzip = zlib.compress(bytes(projJson, encoding='utf8'))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x00, 0x60] + sysex_data.encode(projGzip)
     return sendMsg
 def test_enc_list1_long(self):
     to_enc = [
         0xF6, 0xE5, 0xD4, 0xC3, 0xB2, 0xA1, 0x00, 0x00, 0xA1, 0xB2, 0xC3,
         0xD4, 0xE5, 0xF6
     ]
     enc = sysex_data.encode(to_enc)
     self.assertListEqual(enc, [
         0x76, 0x65, 0x54, 0x43, 0x32, 0x21, 0x00, 0x7E, 0x00, 0x21, 0x32,
         0x43, 0x54, 0x65, 0x76, 0x3F
     ])
示例#4
0
def test_delete_project():
    # Setup
    f = mock.Mock()
    ctrl = midi_full.MidiProjectController(callback=f)
    # Init in-memory config
    cfg = serverconfiguration.ServerConfiguration()
    proj = cfg.getActiveProjectOrDefault()
    proj.stopProcessing()
    # Get active project metadata
    testMsg = mido.Message('sysex')
    testMsg.data = [0x00, 0x70] + sysex_data.encode(proj.id)
    # Handle message
    ctrl.handleMidiMsg(testMsg, cfg, proj)
    assert f.call_count == 1
    retMsg = f.call_args[0][0]
    # Check response message ID
    assert retMsg.data[0] == 0x00
    assert retMsg.data[1] == 0x70
    def _createEnabledControllersMsg(self, proj):
        status = proj.getController()
        controllerEnabled = {}
        for controller in modulation.allController:
            if controller in inverseControllerMap:
                controllerEnabled[inverseControllerMap[controller]] = False

        logger.debug("Status: {}".format(status.keys()))
        for controller in status.keys():
            if controller in inverseControllerMap:
                controllerEnabled[inverseControllerMap[controller]] = True

        logger.debug(
            "MIDI-BLE RESPONSE Enabled controllers for active scene: {}".
            format(controllerEnabled))

        sendMsg = mido.Message('sysex')
        sendMsg.data = [0x01, 0x30] + sysex_data.encode(
            json.dumps(controllerEnabled))
        return sendMsg
示例#6
0
def test_activate_project_successful():
    # Setup
    f = mock.Mock()
    ctrl = midi_full.MidiProjectController(callback=f)
    # Init in-memory config
    cfg = serverconfiguration.ServerConfiguration()
    proj = cfg.getActiveProjectOrDefault()  # type: project.Project
    proj.stopProcessing()
    # Activate project
    testMsg = mido.Message('sysex')
    testMsg.data = [0x00, 0x40] + sysex_data.encode(
        bytes(proj.id, encoding='utf8'))

    # Handle message
    ctrl.handleMidiMsg(testMsg, cfg, proj)
    assert f.call_count == 1
    retMsg = f.call_args[0][0]
    # Check response message ID
    assert retMsg.data[0] == 0x00
    assert retMsg.data[1] == 0x40
示例#7
0
def test_import_project_error():
    # Setup
    f = mock.Mock()
    ctrl = midi_full.MidiProjectController(callback=f)
    # Init in-memory config
    cfg = serverconfiguration.ServerConfiguration()
    proj = cfg.getActiveProjectOrDefault()  # type: project.Project
    proj.stopProcessing()
    # Activate project
    testMsg = mido.Message('sysex')
    invalidJson = jsonpickle.encode(testMsg)
    gzip = zlib.compress(bytes(invalidJson, encoding='utf8'))
    testMsg.data = [0x00, 0x50] + sysex_data.encode(bytes(gzip))

    # Handle message
    ctrl.handleMidiMsg(testMsg, cfg, proj)
    assert f.call_count == 1
    retMsg = f.call_args[0][0]
    # Check response message ID
    assert retMsg.data[0] == 0x00
    assert retMsg.data[1] == 0x5F
示例#8
0
def test_update_server_config():
    # Setup
    f = mock.Mock()
    ctrl = midi_full.MidiProjectController(callback=f)
    # Init in-memory config
    cfg = serverconfiguration.ServerConfiguration()
    assert not cfg.getConfiguration(
        serverconfiguration.CONFIG_ADVERTISE_BLUETOOTH)
    # Get active project metadata
    j_dict = json.dumps({"advertise_bluetooth": True})
    gzip = zlib.compress(bytes(j_dict, encoding='utf8'))

    testMsg = mido.Message('sysex')
    testMsg.data = [0x02, 0x10] + sysex_data.encode(bytes(gzip))

    # Handle message
    ctrl.handleMidiMsg(testMsg, cfg, None)
    assert f.call_count == 1
    retMsg = f.call_args[0][0]
    # Check response message ID
    assert retMsg.data[0] == 0x02
    assert retMsg.data[1] == 0x10

    assert cfg.getConfiguration(serverconfiguration.CONFIG_ADVERTISE_BLUETOOTH)
示例#9
0
def test_export_project():
    # Setup
    f = mock.Mock()
    ctrl = midi_full.MidiProjectController(callback=f)
    # Init in-memory config
    cfg = serverconfiguration.ServerConfiguration()
    proj = cfg.getActiveProjectOrDefault()
    proj.stopProcessing()
    # Get active project metadata
    testMsg = mido.Message('sysex')
    testMsg.data = [0x00, 0x60] + sysex_data.encode(proj.id)
    # Handle message
    ctrl.handleMidiMsg(testMsg, cfg, proj)
    assert f.call_count == 1
    retMsg = f.call_args[0][0]
    # Check response message ID
    assert retMsg.data[0] == 0x00
    assert retMsg.data[1] == 0x60
    # Decode data
    dec = sysex_data.decode(retMsg.data[2:])
    dec = zlib.decompress(bytes(dec))
    restoredProj = jsonpickle.loads(dec)  # type project.Project
    assert restoredProj is not None
    assert restoredProj.id == proj.id
示例#10
0
def test_import_project_successful():
    # Setup
    f = mock.Mock()
    ctrl = midi_full.MidiProjectController(callback=f)
    # Init in-memory config
    cfg = serverconfiguration.ServerConfiguration()
    proj = cfg.getActiveProjectOrDefault()
    proj.stopProcessing()
    assert len(cfg.getProjectsMetadata().keys()) == 1
    proj.id = "testproj"
    projJson = jsonpickle.dumps(proj)
    print(projJson)
    projGzip = zlib.compress(bytes(projJson, encoding='utf8'))
    # Get active project metadata
    testMsg = mido.Message('sysex')
    testMsg.data = [0x00, 0x50] + sysex_data.encode(bytes(projGzip))
    # Handle message
    ctrl.handleMidiMsg(testMsg, cfg, proj)
    assert f.call_count == 1
    retMsg = f.call_args[0][0]
    # Check response message ID
    assert retMsg.data[0] == 0x00
    assert retMsg.data[1] == 0x50
    assert len(cfg.getProjectsMetadata().keys()) == 2
 def _createProjectsMsg(self, metadata):
     data = json.dumps(metadata)
     logger.debug("MIDI-BLE RESPONSE project metadata: {}".format(data))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x00, 0x30] + sysex_data.encode(data)
     return sendMsg
 def _createUpdateVersionAvailableMsg(self, version):
     logger.debug(
         "MIDI-BLE RESPONSE Update to version {} available".format(version))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x00, 0x11] + sysex_data.encode(version)
     return sendMsg
 def _createGetActiveSceneIdMsg(self, sceneId: int):
     logger.debug(
         "MIDI-BLE RESPONSE Get active scene id {}".format(sceneId))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x01, 0x00] + sysex_data.encode("{}".format(sceneId))
     return sendMsg
 def _createActiveSceneMetadataMsg(self, metadata):
     logger.debug(
         "MIDI-BLE RESPONSE Get active scene metadata {}".format(metadata))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x01, 0x10] + sysex_data.encode(json.dumps(metadata))
     return sendMsg
 def test_enc_0x80(self):
     to_enc = [0x80]
     enc = sysex_data.encode(to_enc)
     self.assertListEqual(enc, [0x00, 0x40])
 def test_enc_list1rev(self):
     to_enc = [0xF6, 0xE5, 0xD4, 0xC3, 0xB2, 0xA1, 0x00]
     # 0 1 1 1 1 1 1 0
     enc = sysex_data.encode(to_enc)
     self.assertListEqual(enc,
                          [0x76, 0x65, 0x54, 0x43, 0x32, 0x21, 0x00, 0x7E])
 def _createVersionMsg(self):
     v = version.get_version()
     logger.debug("MIDI-BLE RESPONSE Current Version {}".format(v))
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x00, 0x00] + sysex_data.encode(v)
     return sendMsg
 def test_enc_list2(self):
     to_enc = [0x00, 0xA1]
     enc = sysex_data.encode(to_enc)
     self.assertListEqual(enc, [0x00, 0x21, 0x20])
 def _createAudioRMSMsg(self, rms):
     sendMsg = mido.Message('sysex')
     sendMsg.data = [0x02, 0x20] + sysex_data.encode("{}".format(rms))
     return sendMsg