|
Packit Service |
b98cfc |
/*
|
|
Packit Service |
b98cfc |
* qlo10k1 - GUI frontend for ld10k1
|
|
Packit Service |
b98cfc |
*
|
|
Packit Service |
b98cfc |
* Copyright (c) 2004 by Peter Zubaj
|
|
Packit Service |
b98cfc |
*
|
|
Packit Service |
b98cfc |
* This program is free software; you can redistribute it and/or modify
|
|
Packit Service |
b98cfc |
* it under the terms of the GNU General Public License as published by
|
|
Packit Service |
b98cfc |
* the Free Software Foundation; either version 2 of the License, or
|
|
Packit Service |
b98cfc |
* (at your option) any later version.
|
|
Packit Service |
b98cfc |
*
|
|
Packit Service |
b98cfc |
* This program is distributed in the hope that it will be useful,
|
|
Packit Service |
b98cfc |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
b98cfc |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
b98cfc |
* GNU General Public License for more details.
|
|
Packit Service |
b98cfc |
*
|
|
Packit Service |
b98cfc |
* You should have received a copy of the GNU General Public License
|
|
Packit Service |
b98cfc |
* along with this program; if not, write to the Free Software
|
|
Packit Service |
b98cfc |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit Service |
b98cfc |
*
|
|
Packit Service |
b98cfc |
*/
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
#include <stdlib.h>
|
|
Packit Service |
b98cfc |
#include <lo10k1/lo10k1.h>
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
#include "strglobal.h"
|
|
Packit Service |
b98cfc |
#include "strparam.h"
|
|
Packit Service |
b98cfc |
#include "ld10k1file.h"
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
class CardParamPrivate
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
public:
|
|
Packit Service |
b98cfc |
liblo10k1_connection_t card_conn;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
liblo10k1_connection_t *conn()
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return &card_conn;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
};
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
CardParam::CardParam(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
prv = new CardParamPrivate();
|
|
Packit Service |
b98cfc |
liblo10k1_connection_init(prv->conn());
|
|
Packit Service |
b98cfc |
Structure = NULL;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
CardParam::~CardParam(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
disconnect();
|
|
Packit Service |
b98cfc |
if (Structure)
|
|
Packit Service |
b98cfc |
delete Structure;
|
|
Packit Service |
b98cfc |
delete prv;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
StrGlobal *CardParam::getStructure()
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
Structure = new StrGlobal(this);
|
|
Packit Service |
b98cfc |
return Structure;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::disconnect(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
if (liblo10k1_is_open(prv->conn()))
|
|
Packit Service |
b98cfc |
return liblo10k1_disconnect(prv->conn());
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::isConnected(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_is_open(prv->conn());
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::clearDSP(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_dsp_init(prv->conn());
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::testConnection(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
int err = connect();
|
|
Packit Service |
b98cfc |
if (err < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
disconnect();
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::connect(void)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
int err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if (liblo10k1_is_open(prv->conn()))
|
|
Packit Service |
b98cfc |
disconnect();
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
liblo10k1_param params;
|
|
Packit Service |
b98cfc |
const char *tmp = NULL;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
tmp = CardSocket;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
params.wfc = 500; // FIXME - user selectable
|
|
Packit Service |
b98cfc |
params.type = COMM_TYPE_LOCAL; // FIXME
|
|
Packit Service |
b98cfc |
params.server = 0;
|
|
Packit Service |
b98cfc |
params.name = (char *)tmp;
|
|
Packit Service |
b98cfc |
params.port = 0;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_connect(¶ms, prv->conn())) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
return liblo10k1_check_version(prv->conn());
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::load(LD10k1File *ld10k1file, int before, int *loaded, int *loaded_id)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
int err;
|
|
Packit Service |
b98cfc |
liblo10k1_dsp_patch_t *patch = ld10k1file->getLD10k1Format();
|
|
Packit Service |
b98cfc |
err = liblo10k1_patch_load(prv->conn(), patch, before, loaded, loaded_id);
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::unload(int num)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_patch_unload(prv->conn(), num);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::get(int patch_num, LD10k1File **ld10k1file)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_dsp_patch_t *patch;
|
|
Packit Service |
b98cfc |
int err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_patch_get(prv->conn(), patch_num, &patch)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
LD10k1File *tmp = new LD10k1File();
|
|
Packit Service |
b98cfc |
tmp->setLD10k1Format(patch);
|
|
Packit Service |
b98cfc |
*ld10k1file = tmp;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::conAdd(bool multi, bool simple, int from_type, int from_patch, int from_io, int to_type,int to_patch, int to_io, int *id)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_con_add(prv->conn(), multi, simple, from_type, from_patch, from_io, to_type, to_patch, to_io, id);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::conDel(int from_type, int from_patch, int from_io, int *id)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_con_del(prv->conn(), from_type, from_patch, from_io, id);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPointsInfo(int **out, int *count)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_get_points_info(prv->conn(), out, count);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPointInfo(int point_id, CardParamPointInfo *out)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
int err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
liblo10k1_point_info_t pi;
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_point_info(prv->conn(), point_id, &pi)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
out->id = pi.id;
|
|
Packit Service |
b98cfc |
out->type = pi.type;
|
|
Packit Service |
b98cfc |
out->io_idx = pi.io_idx;
|
|
Packit Service |
b98cfc |
out->simple = pi.simple;
|
|
Packit Service |
b98cfc |
out->multi = pi.multi;
|
|
Packit Service |
b98cfc |
out->conn_count = pi.conn_count;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
for (int i = 0; i < POINTINFO_MAX_CONN_PER_POINT; i++)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
out->io_type[i] = pi.io_type[i];
|
|
Packit Service |
b98cfc |
out->patch[i] = pi.patch[i];
|
|
Packit Service |
b98cfc |
out->io[i] = pi.io[i];
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
QString CardParam::errorStr(int err)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return QString(liblo10k1_error_str(err));
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
CardParam::CardParam(CardParam *from)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
prv = new CardParamPrivate();
|
|
Packit Service |
b98cfc |
liblo10k1_connection_init(prv->conn());
|
|
Packit Service |
b98cfc |
CardName = from->CardName;
|
|
Packit Service |
b98cfc |
CardSocket = from->CardSocket;
|
|
Packit Service |
b98cfc |
};
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getFXCount(int *cnt)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_get_fx_count(prv->conn(), cnt);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getInputCount(int *cnt)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_get_in_count(prv->conn(), cnt);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getOutputCount(int *cnt)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_get_out_count(prv->conn(), cnt);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getFX(int i, QString &name)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_get_io_t ld_tmp;
|
|
Packit Service |
b98cfc |
int err = 0;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_fx(prv->conn(), i, &ld_tmp)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
name = ld_tmp.name;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getInput(int i, QString &name)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_get_io_t ld_tmp;
|
|
Packit Service |
b98cfc |
int err = 0;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_in(prv->conn(), i, &ld_tmp)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
name = ld_tmp.name;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getOutput(int i, QString &name)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_get_io_t ld_tmp;
|
|
Packit Service |
b98cfc |
int err = 0;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_out(prv->conn(), i, &ld_tmp)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
name = ld_tmp.name;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPInputCount(int pnum, int *cnt)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_get_pin_count(prv->conn(), pnum, cnt);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPOutputCount(int pnum, int *cnt)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1_get_pout_count(prv->conn(), pnum, cnt);
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPInput(int pnum, int i, QString &name)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_get_io_t ld_tmp;
|
|
Packit Service |
b98cfc |
int err = 0;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_pin(prv->conn(), pnum, i, &ld_tmp)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
name = ld_tmp.name;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPOutput(int pnum, int i, QString &name)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_get_io_t ld_tmp;
|
|
Packit Service |
b98cfc |
int err = 0;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_pout(prv->conn(), pnum, i, &ld_tmp)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
name = ld_tmp.name;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getPatchesInfo(CardParamPatchInfo ***pi, int *cnt)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_patches_info_t *ld_patches;
|
|
Packit Service |
b98cfc |
int err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
CardParamPatchInfo **tmppi = NULL;
|
|
Packit Service |
b98cfc |
*pi = NULL;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1_get_patches_info(prv->conn(), &ld_patches, cnt)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
tmppi = new CardParamPatchInfo *[*cnt];
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
for (int i = 0; i < *cnt; i++)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
tmppi[i] = new CardParamPatchInfo();
|
|
Packit Service |
b98cfc |
tmppi[i]->patch_num = ld_patches[i].patch_num;
|
|
Packit Service |
b98cfc |
tmppi[i]->id = ld_patches[i].id;
|
|
Packit Service |
b98cfc |
tmppi[i]->patch_name = ld_patches[i].patch_name;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
free(ld_patches);
|
|
Packit Service |
b98cfc |
*pi = tmppi;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::getDspConfig(LD10k1DspFile **dc)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
liblo10k1_file_dsp_setup_t *ds = NULL;
|
|
Packit Service |
b98cfc |
int err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
if ((err = liblo10k1lf_get_dsp_config(prv->conn(), &ds)) < 0)
|
|
Packit Service |
b98cfc |
return err;
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
LD10k1DspFile *ldc = new LD10k1DspFile();
|
|
Packit Service |
b98cfc |
ldc->setLD10k1DspFormat(ds);
|
|
Packit Service |
b98cfc |
*dc = ldc;
|
|
Packit Service |
b98cfc |
return 0;
|
|
Packit Service |
b98cfc |
}
|
|
Packit Service |
b98cfc |
|
|
Packit Service |
b98cfc |
int CardParam::putDspConfig(LD10k1DspFile *dc)
|
|
Packit Service |
b98cfc |
{
|
|
Packit Service |
b98cfc |
return liblo10k1lf_put_dsp_config(prv->conn(), dc->getLD10k1DspFormat());
|
|
Packit Service |
b98cfc |
}
|