Merge branch 'master' into RDImport

Conflicts:
	ChangeLog
This commit is contained in:
Patrick Linstruth
2018-10-17 08:43:20 -07:00
162 changed files with 8552 additions and 18831 deletions

1
.gitignore vendored
View File

@@ -124,6 +124,7 @@ utils/rdclilogedit/rdclilogedit
utils/rdcleandirs/rdcleandirs
utils/rdsoftkeys/rdsoftkeys
utils/rddbcheck/rddbcheck
utils/rddbconfig/rddbconfig
utils/rdalsaconfig/rdalsaconfig
utils/rdpopup/rdpopup
utils/rddbmgr/rddbmgr

View File

@@ -28,6 +28,7 @@ Fred Gleason <fredg@paravelsystems.com>
Patrick Linstruth <patrick@deltecent.com>
General Bugfixes
rddbconfig(8) Utility
TuneIn RLM
Dan Mills <dmills@spamblock.demon.co.uk>

17652
ChangeLog

File diff suppressed because it is too large Load Diff

49
INSTALL
View File

@@ -30,7 +30,7 @@ LibSndFile
An audio file support library, written by Erik de Castro Lopo. Included with
most distros, or you can find it at http://www.mega-nerd.com/libsndfile/.
mySQL Database Server
MySQL/MariaDB Database Server
Included in most Linux distributions. See http://www.mysql.com/.
PAM Pluggable Authentication Modules
@@ -55,6 +55,9 @@ SoundTouch Audio Processing Library
A library for altering the pitch and/or tempo of digital audio data.
Available at http://www.surina.net/soundtouch/.
Systemd System and Service Manager
Most modern Linux distros include this.
X11 Window System
Virtually all Linux distros should include this.
@@ -83,10 +86,6 @@ Free Lossless Audio Codec (FLAC), v1.2.x or greater
A "lossless" audio encoding library. Included with most distros, or
available from: http://flac.sourceforge.net/.
GPIO Driver
A kernel driver for the line of data-acquisition boards from
MeasurementComputing. See http://www.rivendellaudio.org/.
FAAD2 / mp4v2 - AAC/MP4 Decoding Libraries. Needed for MP4 file importation.
Available at http://www.audiocoding.com/faad2.html and
https://code.google.com/p/mp4v2/ respectively.
@@ -208,16 +207,32 @@ This directory should owned, readable, writable and searchable by the user
and group specified in the 'AudioOwner=' and 'AudioGroup=' entires in
'/etc/rd.conf' and readable and searchable by Others (mode 0775).
Finally, it's time to start things up. Run 'rdadmin' from a shell
prompt. For the first time startup, RDAdmin will prompt for a login
name/password on the mySQL server so that it can create the Rivendell
database. To log into RDAdmin for the first time, enter a User Name of
'admin' with no password.
Next, create an empty database on the MySQL/MariaDb server, as well as a
DB user to access it. This user should have the following privileges:
Much of the work in Rivendell gets done by three daemon processes,
named 'caed', 'ripcd' and 'rdcatchd'. These daemons *must* be running
before attempting to start any of the Rivendell applications. The
order in which they are started is important, and should be the same
as the order in which they are listed above. For convienence, a Sys-V
style init script called 'rivendell' that can start, stop and restart
the daemons properly is installed in '/etc/init.d/'.
Select
Insert
Update
Delete
Create
Drop
References
Index
Alter
Create Temporary Table
Lock Tables
In the '[mySQL]' section of the '/etc/rd.conf' file, set the 'Database=',
'Loginname=' and 'Password=' parameters to the DB name, user and password
that you created. Then, create an initial Rivendell database by doing:
rddbmgr --create
If all goes well, this command should return with no output.
Finally, start up the Rivendell service by doing (as root):
systemctl start rivendell
You should now be able to run the various Rivendell components from the
Applications menu.

9
README
View File

@@ -1,5 +1,10 @@
This is the README file for the Rivendell package.
WARNING: This is a BETA TEST version of Rivendell. As such, it is virtually
guaranteed to contain bugs, possibly severe ones that could
cause LOSS OF DATA. It is intended for testing purposes, and
should not be used in 'production' siuations.
This software comes with ABSOLUTELY NO WARRANTY. See the file COPYING for
details.
@@ -8,8 +13,8 @@ to be a robust, functionally complete digital audio system for use in
professional radio broadcast environments.
See the file INSTALL for installation instructions. If you are upgrading from
a 1.x version of Rivendell, also see the file 'UPGRADING' for important notes
and pointers.
a 1.x or 2.x version of Rivendell, also see the file 'UPGRADING'
for important notes and pointers.
OVERVIEW

View File

@@ -1,25 +1,25 @@
IMPORTANT NOTE: BE SURE TO SEE THE SECTION ON 'PASSWORD STORAGE' BELOW,
OTHERWISE YOU MAY BE LOCKED OUT OF THE SYSTEM AFTER THE UPDATE!
This file provides some notes to those performing an upgrade from a v1.x
version to Rivendell. It is an attempt to provide some pointers about things
which have changed, but is in no way a substitute for reading the 'INSTALL'
file and other documentation!
This file provides some notes to those performing an upgrade from a v1.x or
v2.x version of Rivendell. It is an attempt to provide some pointers about
things which have changed, but is in no way a substitute for reading the
'INSTALL' file and other documentation!
1) DEPENDENCIES
The set of external packages required to build and run Rivendell has changed
significantly from that required for a 1.x system. See 'INSTALL' for a full
list.
significantly from that required for a 1.x or 2.x system. See 'INSTALL' for
a full list.
2) MPEG SUPPORT
This version of Rivendell inaugurates optional support for MPEG Layer 2
This version of Rivendell includes optional support for MPEG Layer 2
encoding within the core Rivendell audio library for all classes of audio
device (JACK and ALSA as well as AudioScience HPI). To make use of this
feature, it will be necessary to have the appropriate MPEG libraries
properly installed at both build- and run-time. See 'INSTALL' for the
specifics.
3) FILE OWNERSHIP AND PERMISSIONS
3) FILE OWNERSHIP AND PERMISSIONS (v1.x only)
Recommended file ownership and permissions for the '/var/snd' directory and
its contents have changed. These items should be owned by system user and
group accounts created specifically for Rivendell; no 'real' user on the
@@ -41,16 +41,16 @@ that will configure the target web services directory (set by the
automatically as part of the build process; it can be found in
'conf/rd-bin.conf' after the build is complete.
5) PASSWORD STORAGE
The method of storing passwords in the database has changed in Rivendell 2.x,
requiring that all non-null passwords be reset after performing the upgrade.
This means that it is important that the account used to access RDAdmin be set
to use a null (blank) password *before* applying the update, otherwise you
will not be able to access RDAdmin afterwards! Once the update has been
applied, passwords should be re-entered for all user accounts in RDAdmin
(including administrative ones) in the usual manner.
5) PASSWORD STORAGE (v1.x only)
The method of storing passwords in the database has changed in Rivendell 2.x
and 3.x, requiring that all non-null passwords be reset after performing the
upgrade. This means that it is important that the account used to access
RDAdmin be set to use a null (blank) password *before* applying the update,
otherwise you will not be able to access RDAdmin afterwards! Once the update
has been applied, passwords should be re-entered for all user accounts in
RDAdmin (including administrative ones) in the usual manner.
6) AUDIO SAMPLE RATE
6) AUDIO SAMPLE RATE (v1.x only)
The sample rate to be used for the Rivendell audio library is now a single
system-wide setting (found in RDAdmin->SystemSettings); it is no longer
possible to set sample rates individually per module/workstation. When
@@ -67,7 +67,7 @@ the target file, respectively.
The 'smb:' protocol is no longer supported.
8) RLM API CHANGES
8) RLM API CHANGES (V1.x only)
The parameters passed to the RLMPadDataSent() callback in RLMs have changed;
private plug-ins written for RD 1.x will need to be modified to work with the
new API. (All plug-ins supplied with the Rivendell sources have already been

View File

@@ -40,7 +40,9 @@ dist_librivwebcapi_la_SOURCES = rd_addcart.c rd_addcart.h \
rd_import.c rd_import.h \
rd_listcartschedcodes.c rd_listcartschedcodes.h\
rd_listcart.c rd_listcart.h \
rd_listcartcuts.c rd_listcartcuts.h \
rd_listcarts.c rd_listcarts.h \
rd_listcartscuts.c rd_listcartscuts.h \
rd_listcut.c rd_listcut.h \
rd_listcuts.c rd_listcuts.h \
rd_listgroups.c rd_listgroups.h \
@@ -81,8 +83,10 @@ include_HEADERS = rd_addcart.h\
rd_group.h\
rd_import.h\
rd_listcart.h\
rd_listcartcuts.h\
rd_listcartschedcodes.h\
rd_listcarts.h\
rd_listcartscuts.h\
rd_listcut.h\
rd_listcuts.h\
rd_listgroup.h\

View File

@@ -16,6 +16,8 @@
#include <time.h>
#include <rivwebcapi/rd_cut.h>
enum CART_TYPE {TYPE_ALL,TYPE_AUDIO,TYPE_MACRO};
struct rd_cart {
@@ -39,7 +41,6 @@ struct rd_cart {
int cart_length_deviation;
int cart_average_segue_length;
int cart_average_hook_length;
unsigned cart_cut_quantity;
unsigned cart_last_cut_played;
unsigned cart_validity;
int cart_enforce_length;
@@ -47,6 +48,8 @@ struct rd_cart {
char cart_owner[257];
char cart_notes[4096];
struct tm cart_metadata_datetime;
unsigned cart_cut_quantity;
struct rd_cut **cart_cuts;
};

View File

@@ -24,7 +24,7 @@
#include <time.h>
struct rd_cut {
char cut_name[11];
char cut_name[41];
unsigned cut_cart_number;
unsigned cut_cut_number;
int cut_evergreen;

View File

@@ -0,0 +1,482 @@
/* rd_listcartcuts.c
*
* Implementation of the ListCartCuts Rivendell Access Library
*
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
* (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <expat.h>
#include "rd_common.h"
#include "rd_getuseragent.h"
#include "rd_listcart.h"
struct xml_data {
char elem_name[256];
char strbuf[1024];
struct rd_cart *carts;
int cut_ptr;
};
static void XMLCALL __ListCartCutsElementStart(void *data, const char *el,
const char **attr)
{
unsigned i;
struct xml_data *xml_data=(struct xml_data *)data;
if(strcasecmp(el,"cart")==0) { // Allocate a new cart entry
xml_data->carts=realloc(xml_data->carts, sizeof(struct rd_cart));
memset(xml_data->carts,0,sizeof(struct rd_cart));
xml_data->cut_ptr=-1;
}
if(strcasecmp(el,"cut")==0) { // Allocate a new cut entry
(xml_data->cut_ptr)++;
xml_data->carts->cart_cuts=realloc(xml_data->carts->cart_cuts,sizeof(struct rd_cut)*((xml_data->cut_ptr)+1));
}
strlcpy(xml_data->elem_name,el,256);
memset(xml_data->strbuf,0,1024);
}
static void XMLCALL __ListCartCutsElementData(void *data,const XML_Char *s,
int len)
{
struct xml_data *xml_data=(struct xml_data *)data;
memcpy(xml_data->strbuf+strlen(xml_data->strbuf),s,len);
}
static void XMLCALL __ListCartCutsElementEnd(void *data, const char *el)
{
struct xml_data *xml_data=(struct xml_data *)data;
struct rd_cart *carts=xml_data->carts;
char hold_datetime[27];
if(xml_data->cut_ptr<0) {
/*
* Cart Attributes
*/
if(strcasecmp(el,"number")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_number);
}
if(strcasecmp(el,"type")==0) {
if(strcasecmp(xml_data->strbuf,"audio")==0) {
carts->cart_type=TYPE_AUDIO;
}
else {
if(strcasecmp(xml_data->strbuf,"macro")==0) {
carts->cart_type=TYPE_MACRO;
}
else
{
/* This is ALL type */
carts->cart_type=TYPE_ALL;
}
}
}
if(strcasecmp(el,"groupName")==0) {
strlcpy(carts->cart_grp_name,xml_data->strbuf,41);
}
if(strcasecmp(el,"title")==0) {
strlcpy(carts->cart_title,xml_data->strbuf,1021);
}
if(strcasecmp(el,"artist")==0) {
strlcpy(carts->cart_artist,xml_data->strbuf,1021);
}
if(strcasecmp(el,"album")==0) {
strlcpy(carts->cart_album,xml_data->strbuf,1021);
}
if(strcasecmp(el,"year")==0) {
sscanf(xml_data->strbuf,"%d",&carts->cart_year);
}
if(strcasecmp(el,"label")==0) {
strlcpy(carts->cart_label,xml_data->strbuf,257);
}
if(strcasecmp(el,"client")==0) {
strlcpy(carts->cart_client,xml_data->strbuf,257);
}
if(strcasecmp(el,"agency")==0) {
strlcpy(carts->cart_agency,xml_data->strbuf,257);
}
if(strcasecmp(el,"publisher")==0) {
strlcpy(carts->cart_publisher,xml_data->strbuf,257);
}
if(strcasecmp(el,"composer")==0) {
strlcpy(carts->cart_composer,xml_data->strbuf,257);
}
if(strcasecmp(el,"conductor")==0) {
strlcpy(carts->cart_conductor,xml_data->strbuf,257);
}
if(strcasecmp(el,"userDefined")==0) {
strlcpy(carts->cart_user_defined,xml_data->strbuf,1021);
}
if(strcasecmp(el,"usageCode")==0) {
sscanf(xml_data->strbuf,"%d",&carts->cart_usage_code);
}
if(strcasecmp(el,"forcedLength")==0) {
carts->cart_forced_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"averageLength")==0) {
carts->cart_average_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"lengthDeviation")==0) {
carts->cart_length_deviation=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"averageSegueLength")==0) {
carts->cart_average_segue_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"averageHookLength")==0) {
carts->cart_average_hook_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"cutQuantity")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_cut_quantity);
}
if(strcasecmp(el,"lastCutPlayed")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_last_cut_played);
}
if(strcasecmp(el,"validity")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_validity);
}
if(strcasecmp(el,"enforceLength")==0) {
carts->cart_enforce_length=RD_ReadBool(xml_data->strbuf);
}
if(strcasecmp(el,"asyncronous")==0) {
carts->cart_asyncronous=RD_ReadBool(xml_data->strbuf);
}
if(strcasecmp(el,"owner")==0) {
strlcpy(carts->cart_owner,xml_data->strbuf,257);
}
if(strcasecmp(el,"metadataDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
carts->cart_metadata_datetime = RD_Cnv_DTString_to_tm(hold_datetime);
}
}
else {
/*
* Cut Attributes
*/
struct rd_cut *cut=(struct rd_cut *)(carts->cart_cuts)+xml_data->cut_ptr;
if(strcasecmp(el,"cutName")==0) {
strlcpy(cut->cut_name,xml_data->strbuf,40);
}
if(strcasecmp(el,"cartNumber")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_cart_number));
}
if(strcasecmp(el,"cutNumber")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_cut_number));
}
if(strcasecmp(el,"evergreen")==0) {
cut->cut_evergreen=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"description")==0) {
strlcpy(cut->cut_description,xml_data->strbuf,256);
}
if(strcasecmp(el,"outcue")==0) {
strlcpy(cut->cut_outcue,xml_data->strbuf,256);
}
if(strcasecmp(el,"isrc")==0) {
strlcpy(cut->cut_isrc,xml_data->strbuf,48);
}
if(strcasecmp(el,"isci")==0) {
strlcpy(cut->cut_isci,xml_data->strbuf,128);
}
if(strcasecmp(el,"length")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_length));
}
if(strcasecmp(el,"originDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_origin_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"startDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_start_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"endDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_end_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"sun")==0) {
cut->cut_sun=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"mon")==0) {
cut->cut_mon=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"tue")==0) {
cut->cut_tue=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"wed")==0) {
cut->cut_wed=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"thu")==0) {
cut->cut_thu=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"fri")==0) {
cut->cut_fri=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"sat")==0) {
cut->cut_sat=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"startDaypart")==0) {
strlcpy(cut->cut_start_daypart,xml_data->strbuf,14);
}
if(strcasecmp(el,"endDaypart")==0) {
strlcpy(cut->cut_end_daypart,xml_data->strbuf,14);
}
if(strcasecmp(el,"originName")==0) {
strlcpy(cut->cut_origin_name,xml_data->strbuf,256);
}
if(strcasecmp(el,"originLoginName")==0) {
strlcpy(cut->cut_origin_login_name,xml_data->strbuf,764);
}
if(strcasecmp(el,"sourceHostname")==0) {
strlcpy(cut->cut_source_hostname,xml_data->strbuf,764);
}
if(strcasecmp(el,"weight")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_weight));
}
if(strcasecmp(el,"lastPlayDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_last_play_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"playCounter")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_play_counter));
}
if(strcasecmp(el,"codingFormat")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_coding_format));
}
if(strcasecmp(el,"sampleRate")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_sample_rate));
}
if(strcasecmp(el,"bitRate")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_bit_rate));
}
if(strcasecmp(el,"channels")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_channels));
}
if(strcasecmp(el,"playGain")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_play_gain));
}
if(strcasecmp(el,"startPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_start_point));
}
if(strcasecmp(el,"endPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_end_point));
}
if(strcasecmp(el,"fadeupPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_fadeup_point));
}
if(strcasecmp(el,"fadedownPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_fadedown_point));
}
if(strcasecmp(el,"segueStartPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_segue_start_point));
}
if(strcasecmp(el,"segueEndPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_segue_end_point));
}
if(strcasecmp(el,"segueGain")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_segue_gain));
}
if(strcasecmp(el,"hookStartPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_hook_start_point));
}
if(strcasecmp(el,"hookEndPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_hook_end_point));
}
if(strcasecmp(el,"talkStartPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_talk_start_point));
}
if(strcasecmp(el,"talkEndPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_talk_end_point));
}
}
}
size_t __ListCartCutsCallback(void *ptr, size_t size, size_t nmemb, void *userdata)
{
XML_Parser p=(XML_Parser)userdata;
XML_Parse(p,ptr,size*nmemb,0);
return size*nmemb;
}
int RD_ListCartCuts(struct rd_cart *carts[],
const char hostname[],
const char username[],
const char passwd[],
const char ticket[],
const unsigned cartnumber,
const char user_agent[],
unsigned *numrecs)
{
char url[1500];
CURL *curl=NULL;
XML_Parser parser;
struct xml_data xml_data;
long response_code;
char errbuf[CURL_ERROR_SIZE];
CURLcode res;
char user_agent_string[255];
char cart_buffer[7];
struct curl_httppost *first=NULL;
struct curl_httppost *last=NULL;
/* Set number of recs so if fail already set */
*numrecs = 0;
if((curl=curl_easy_init())==NULL) {
curl_easy_cleanup(curl);
return -1;
}
/*
* Setup the CURL call
*/
memset(&xml_data,0,sizeof(xml_data));
parser=XML_ParserCreate(NULL);
XML_SetUserData(parser,&xml_data);
XML_SetElementHandler(parser,__ListCartCutsElementStart,
__ListCartCutsElementEnd);
XML_SetCharacterDataHandler(parser,__ListCartCutsElementData);
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"COMMAND",
CURLFORM_COPYCONTENTS,
"7",
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"LOGIN_NAME",
CURLFORM_COPYCONTENTS,
username,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"PASSWORD",
CURLFORM_COPYCONTENTS,
passwd,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"TICKET",
CURLFORM_COPYCONTENTS,
ticket,
CURLFORM_END);
snprintf(cart_buffer,7,"%u",cartnumber);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"CART_NUMBER",
CURLFORM_COPYCONTENTS,
cart_buffer,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"INCLUDE_CUTS",
CURLFORM_PTRCONTENTS,
"1",
CURLFORM_END);
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCartCutsCallback);
curl_easy_setopt(curl,CURLOPT_URL,url);
curl_easy_setopt(curl,CURLOPT_POST,1);
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
// Check if User Agent Present otherwise set to default
if (strlen(user_agent)> 0){
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
}
else
{
strcpy(user_agent_string, RD_GetUserAgent());
strcat(user_agent_string,VERSION);
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent_string);
}
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
#ifdef RIVC_DEBUG_OUT
size_t len = strlen(errbuf);
fprintf(stderr, "\nlibcurl error: (%d)", res);
if (len)
fprintf(stderr, "%s%s", errbuf,
((errbuf[len-1] != '\n') ? "\n" : ""));
else
fprintf(stderr, "%s\n", curl_easy_strerror(res));
#endif
curl_easy_cleanup(curl);
return -1;
}
/* The response OK - so figure out if we got what we wanted.. */
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
curl_formfree(first);
curl_easy_cleanup(curl);
if (response_code > 199 && response_code < 300) {
*carts=xml_data.carts;
*numrecs = 1;
return 0;
}
else {
#ifdef RIVC_DEBUG_OUT
fprintf(stderr," rd_listcart Call Returned Error: %s\n",xml_data.strbuf);
#endif
return (int)response_code;
}
}
struct rd_cut *RD_ListCartCuts_GetCut(struct rd_cart *cart,int pos)
{
return (struct rd_cut *)(cart->cart_cuts)+pos;
}
void RD_ListCartCuts_Free(struct rd_cart *cart)
{
if(cart->cart_cuts!=NULL) {
free(cart->cart_cuts);
}
free(cart);
}

View File

@@ -0,0 +1,45 @@
/* rd_listcartcuts.h
*
* Header for the ListCartCuts Rivendell Access Library
*
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
* (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef RD_LISTCARTCUTS_H
#define RD_LISTCARTCUTS_H
#include <rivwebcapi/rd_common.h>
_MYRIVLIB_INIT_DECL
#include <rivwebcapi/rd_cart.h>
int RD_ListCartCuts(struct rd_cart *carts[],
const char hostname[],
const char username[],
const char passwd[],
const char ticket[],
const unsigned cartnumber,
const char user_agent[],
unsigned *numrecs);
struct rd_cut *RD_ListCartCuts_GetCut(struct rd_cart *cart,int pos);
void RD_ListCartCuts_Free(struct rd_cart *cart);
_MYRIVLIB_FINI_DECL
#endif // RD_LISTCARTCUTS_H

View File

@@ -0,0 +1,509 @@
/* rd_listcartscuts.c
*
* ListCartsCuts Rivendell Access Library
*
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
* (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <expat.h>
#include "rd_common.h"
#include "rd_getuseragent.h"
#include "rd_listcartscuts.h"
struct xml_data {
char elem_name[256];
char strbuf[1024];
struct rd_cart *carts;
int cart_ptr;
int cut_ptr;
};
static void XMLCALL __ListCartsCutsElementStart(void *data, const char *el,
const char **attr)
{
unsigned i;
struct xml_data *xml_data=(struct xml_data *)data;
if(strcasecmp(el,"cart")==0) { // Allocate a new cart entry
(xml_data->cart_ptr)++;
xml_data->carts=
realloc(xml_data->carts,sizeof(struct rd_cart)*(xml_data->cart_ptr+1));
memset(xml_data->carts+xml_data->cart_ptr,0,sizeof(struct rd_cart));
xml_data->cut_ptr=-1;
}
if(strcasecmp(el,"cut")==0) { // Allocate a new cut entry
(xml_data->cut_ptr)++;
(xml_data->carts+xml_data->cart_ptr)->cart_cuts=realloc((xml_data->carts+xml_data->cart_ptr)->cart_cuts,sizeof(struct rd_cut)*((xml_data->cut_ptr)+1));
}
strlcpy(xml_data->elem_name,el,256);
memset(xml_data->strbuf,0,1024);
}
static void XMLCALL __ListCartsCutsElementData(void *data,const XML_Char *s,
int len)
{
struct xml_data *xml_data=(struct xml_data *)data;
memcpy(xml_data->strbuf+strlen(xml_data->strbuf),s,len);
}
static void XMLCALL __ListCartsCutsElementEnd(void *data, const char *el)
{
struct xml_data *xml_data=(struct xml_data *)data;
struct rd_cart *carts=(xml_data->carts)+xml_data->cart_ptr;
char hold_datetime[27];
if(xml_data->cut_ptr<0) {
/*
* Cart Attributes
*/
if(strcasecmp(el,"number")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_number);
}
if(strcasecmp(el,"type")==0) {
if(strcasecmp(xml_data->strbuf,"audio")==0) {
carts->cart_type=TYPE_AUDIO;
}
else {
if(strcasecmp(xml_data->strbuf,"macro")==0) {
carts->cart_type=TYPE_MACRO;
}
else
{
/* This is ALL type */
carts->cart_type=TYPE_ALL;
}
}
}
if(strcasecmp(el,"groupName")==0) {
strlcpy(carts->cart_grp_name,xml_data->strbuf,41);
}
if(strcasecmp(el,"title")==0) {
strlcpy(carts->cart_title,xml_data->strbuf,1021);
}
if(strcasecmp(el,"artist")==0) {
strlcpy(carts->cart_artist,xml_data->strbuf,1021);
}
if(strcasecmp(el,"album")==0) {
strlcpy(carts->cart_album,xml_data->strbuf,1021);
}
if(strcasecmp(el,"year")==0) {
sscanf(xml_data->strbuf,"%d",&carts->cart_year);
}
if(strcasecmp(el,"label")==0) {
strlcpy(carts->cart_label,xml_data->strbuf,257);
}
if(strcasecmp(el,"client")==0) {
strlcpy(carts->cart_client,xml_data->strbuf,257);
}
if(strcasecmp(el,"agency")==0) {
strlcpy(carts->cart_agency,xml_data->strbuf,257);
}
if(strcasecmp(el,"publisher")==0) {
strlcpy(carts->cart_publisher,xml_data->strbuf,257);
}
if(strcasecmp(el,"composer")==0) {
strlcpy(carts->cart_composer,xml_data->strbuf,257);
}
if(strcasecmp(el,"conductor")==0) {
strlcpy(carts->cart_conductor,xml_data->strbuf,257);
}
if(strcasecmp(el,"userDefined")==0) {
strlcpy(carts->cart_user_defined,xml_data->strbuf,1021);
}
if(strcasecmp(el,"usageCode")==0) {
sscanf(xml_data->strbuf,"%d",&carts->cart_usage_code);
}
if(strcasecmp(el,"forcedLength")==0) {
carts->cart_forced_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"averageLength")==0) {
carts->cart_average_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"lengthDeviation")==0) {
carts->cart_length_deviation=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"averageSegueLength")==0) {
carts->cart_average_segue_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"averageHookLength")==0) {
carts->cart_average_hook_length=RD_Cnv_TString_to_msec(xml_data->strbuf);
}
if(strcasecmp(el,"cutQuantity")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_cut_quantity);
}
if(strcasecmp(el,"lastCutPlayed")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_last_cut_played);
}
if(strcasecmp(el,"validity")==0) {
sscanf(xml_data->strbuf,"%u",&carts->cart_validity);
}
if(strcasecmp(el,"enforceLength")==0) {
carts->cart_enforce_length=RD_ReadBool(xml_data->strbuf);
}
if(strcasecmp(el,"asyncronous")==0) {
carts->cart_asyncronous=RD_ReadBool(xml_data->strbuf);
}
if(strcasecmp(el,"owner")==0) {
strlcpy(carts->cart_owner,xml_data->strbuf,257);
}
if(strcasecmp(el,"metadataDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
carts->cart_metadata_datetime = RD_Cnv_DTString_to_tm(hold_datetime);
}
}
else {
/*
* Cut Attributes
*/
struct rd_cut *cut=(struct rd_cut *)(carts->cart_cuts)+xml_data->cut_ptr;
if(strcasecmp(el,"cutName")==0) {
strlcpy(cut->cut_name,xml_data->strbuf,40);
}
if(strcasecmp(el,"cartNumber")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_cart_number));
}
if(strcasecmp(el,"cutNumber")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_cut_number));
}
if(strcasecmp(el,"evergreen")==0) {
cut->cut_evergreen=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"description")==0) {
strlcpy(cut->cut_description,xml_data->strbuf,256);
}
if(strcasecmp(el,"outcue")==0) {
strlcpy(cut->cut_outcue,xml_data->strbuf,256);
}
if(strcasecmp(el,"isrc")==0) {
strlcpy(cut->cut_isrc,xml_data->strbuf,48);
}
if(strcasecmp(el,"isci")==0) {
strlcpy(cut->cut_isci,xml_data->strbuf,128);
}
if(strcasecmp(el,"length")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_length));
}
if(strcasecmp(el,"originDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_origin_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"startDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_start_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"endDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_end_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"sun")==0) {
cut->cut_sun=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"mon")==0) {
cut->cut_mon=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"tue")==0) {
cut->cut_tue=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"wed")==0) {
cut->cut_wed=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"thu")==0) {
cut->cut_thu=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"fri")==0) {
cut->cut_fri=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"sat")==0) {
cut->cut_sat=strcmp(xml_data->strbuf,"false");
}
if(strcasecmp(el,"startDaypart")==0) {
strlcpy(cut->cut_start_daypart,xml_data->strbuf,14);
}
if(strcasecmp(el,"endDaypart")==0) {
strlcpy(cut->cut_end_daypart,xml_data->strbuf,14);
}
if(strcasecmp(el,"originName")==0) {
strlcpy(cut->cut_origin_name,xml_data->strbuf,256);
}
if(strcasecmp(el,"originLoginName")==0) {
strlcpy(cut->cut_origin_login_name,xml_data->strbuf,764);
}
if(strcasecmp(el,"sourceHostname")==0) {
strlcpy(cut->cut_source_hostname,xml_data->strbuf,764);
}
if(strcasecmp(el,"weight")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_weight));
}
if(strcasecmp(el,"lastPlayDatetime")==0) {
strlcpy(hold_datetime,xml_data->strbuf,26);
cut->cut_last_play_datetime=RD_Cnv_DTString_to_tm(hold_datetime);
}
if(strcasecmp(el,"playCounter")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_play_counter));
}
if(strcasecmp(el,"codingFormat")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_coding_format));
}
if(strcasecmp(el,"sampleRate")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_sample_rate));
}
if(strcasecmp(el,"bitRate")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_bit_rate));
}
if(strcasecmp(el,"channels")==0) {
sscanf(xml_data->strbuf,"%u",&(cut->cut_channels));
}
if(strcasecmp(el,"playGain")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_play_gain));
}
if(strcasecmp(el,"startPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_start_point));
}
if(strcasecmp(el,"endPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_end_point));
}
if(strcasecmp(el,"fadeupPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_fadeup_point));
}
if(strcasecmp(el,"fadedownPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_fadedown_point));
}
if(strcasecmp(el,"segueStartPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_segue_start_point));
}
if(strcasecmp(el,"segueEndPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_segue_end_point));
}
if(strcasecmp(el,"segueGain")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_segue_gain));
}
if(strcasecmp(el,"hookStartPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_hook_start_point));
}
if(strcasecmp(el,"hookEndPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_hook_end_point));
}
if(strcasecmp(el,"talkStartPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_talk_start_point));
}
if(strcasecmp(el,"talkEndPoint")==0) {
sscanf(xml_data->strbuf,"%d",&(cut->cut_talk_end_point));
}
}
}
size_t __ListCartsCutsCallback(void *ptr, size_t size, size_t nmemb, void *userdata)
{
XML_Parser p=(XML_Parser)userdata;
XML_Parse(p,ptr,size*nmemb,0);
return size*nmemb;
}
int RD_ListCartsCuts(struct rd_cart *carts[],
const char hostname[],
const char username[],
const char passwd[],
const char ticket[],
const char group_name[],
const char filter[],
const char type[],
const char user_agent[],
unsigned *numrecs)
{
char url[1500];
CURL *curl=NULL;
XML_Parser parser;
struct xml_data xml_data;
long response_code;
char errbuf[CURL_ERROR_SIZE];
CURLcode res;
char user_agent_string[255];
struct curl_httppost *first=NULL;
struct curl_httppost *last=NULL;
/* Set number of recs so if fail already set */
*numrecs = 0;
if((curl=curl_easy_init())==NULL) {
curl_easy_cleanup(curl);
return -1;
}
/*
* Setup the CURL call
*/
memset(&xml_data,0,sizeof(xml_data));
xml_data.cart_ptr=-1;
parser=XML_ParserCreate(NULL);
XML_SetUserData(parser,&xml_data);
XML_SetElementHandler(parser,__ListCartsCutsElementStart,
__ListCartsCutsElementEnd);
XML_SetCharacterDataHandler(parser,__ListCartsCutsElementData);
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"COMMAND",
CURLFORM_COPYCONTENTS,
"6",
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"LOGIN_NAME",
CURLFORM_COPYCONTENTS,
username,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"PASSWORD",
CURLFORM_COPYCONTENTS,
passwd,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"TICKET",
CURLFORM_COPYCONTENTS,
ticket,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"GROUP_NAME",
CURLFORM_COPYCONTENTS,
group_name,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"FILTER",
CURLFORM_COPYCONTENTS,
filter,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"TYPE",
CURLFORM_COPYCONTENTS,
type,
CURLFORM_END);
curl_formadd(&first,
&last,
CURLFORM_PTRNAME,
"INCLUDE_CUTS",
CURLFORM_PTRCONTENTS,
"1",
CURLFORM_END);
// Check if User Agent Present otherwise set to default
if (strlen(user_agent)> 0){
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
}
else
{
strcpy(user_agent_string, RD_GetUserAgent());
strcat(user_agent_string,VERSION);
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent_string);
}
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCartsCutsCallback);
curl_easy_setopt(curl,CURLOPT_URL,url);
curl_easy_setopt(curl,CURLOPT_POST,1);
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
#ifdef RIVC_DEBUG_OUT
size_t len = strlen(errbuf);
fprintf(stderr, "\nlibcurl error: (%d)", res);
if (len)
fprintf(stderr, "%s%s", errbuf,
((errbuf[len-1] != '\n') ? "\n" : ""));
else
fprintf(stderr, "%s\n", curl_easy_strerror(res));
#endif
curl_easy_cleanup(curl);
return -1;
}
/* The response OK - so figure out if we got what we wanted.. */
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
curl_formfree(first);
curl_easy_cleanup(curl);
if (response_code > 199 && response_code < 300) {
*carts=xml_data.carts;
*numrecs = xml_data.cart_ptr+1;
return 0;
}
else {
#ifdef RIVC_DEBUG_OUT
fprintf(stderr," rd_listcartscuts Call Returned Error: %s\n",xml_data.strbuf);
#endif
return (int)response_code;
}
}
struct rd_cut *RD_ListCartsCuts_GetCut(struct rd_cart carts[],int cart_rec,
int cut_rec)
{
return
(struct rd_cut *)(((struct rd_cart *)(carts)+cart_rec)->cart_cuts)+cut_rec;
}
void RD_ListCartsCuts_Free(struct rd_cart carts[],int numrecs)
{
int i;
struct rd_cut *cut=NULL;
for(i=0;i<numrecs;i++) {
if(carts[i].cart_cuts!=NULL) {
free(carts[i].cart_cuts);
}
}
free(carts);
}

View File

@@ -0,0 +1,48 @@
/* rd_listcartscuts.h
*
* Header for the ListCartsCuts Rivendell Access Library
*
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
* (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef RD_LISTCARTSCUTS_H
#define RD_LISTCARTSCUTS_H
#include <rivwebcapi/rd_common.h>
_MYRIVLIB_INIT_DECL
#include <rivwebcapi/rd_cart.h>
int RD_ListCartsCuts(struct rd_cart *carts[],
const char hostname[],
const char username[],
const char passwd[],
const char ticket[],
const char group_name[],
const char filter[],
const char type[],
const char user_agent[],
unsigned *numrecs);
struct rd_cut *RD_ListCartsCuts_GetCut(struct rd_cart carts[],int cart_rec,
int cut_rec);
void RD_ListCartsCuts_Free(struct rd_cart carts[],int numrecs);
_MYRIVLIB_FINI_DECL
#endif // RD_LISTCARTSCUTS_H

View File

@@ -1,6 +1,7 @@
## automake.am
##
## (C) Copyright 2015 Fred Gleason <fredg@paravelsystems.com>
## (C) Copyright 2015 Todd Baker <bakert@rfa.org>
## (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
@@ -20,112 +21,150 @@
AM_CFLAGS = -Wall -I$ ..
LIBS = -L$ ../rivwebcapi
noinst_PROGRAMS = listgroups_test \
listgroup_test \
listcarts_test \
listcart_test \
listcuts_test \
listcut_test \
listsystemsettings_test \
listschedcodes_test \
listcartschedcodes_test \
assignschedcode_test \
unassignschedcode_test \
addcart_test \
noinst_PROGRAMS = addcart_test \
addcut_test \
removecart_test \
removecut_test \
audioinfo_test \
createticket_test \
audiostore_test \
trimaudio_test \
listlogs_test \
listservices_test \
addlog_test \
assignschedcode_test \
audioinfo_test \
audiostore_test \
copyaudio_test \
createticket_test \
deleteaudio_test \
deletelog_test \
listlog_test \
savelog_test \
editcart_test \
editcut_test \
importcart_test \
exportcart_test \
exportpeaks_test \
deleteaudio_test \
copyaudio_test \
getuseragent_test \
getversion_test \
getuseragent_test
importcart_test \
listcut_test \
listcuts_test \
listcart_test \
listcartcuts_test \
listcarts_test \
listcartscuts_test \
listcartschedcodes_test \
listgroup_test \
listgroups_test \
listlog_test \
listlogs_test \
listschedcodes_test \
listservices_test \
listsystemsettings_test \
removecart_test \
removecut_test \
savelog_test \
trimaudio_test \
unassignschedcode_test
dist_addcart_test_SOURCES = addcart_test.c
addcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_addcut_test_SOURCES = addcut_test.c
addcut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_addlog_test_SOURCES = addlog_test.c common.c common.h
addlog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_assignschedcode_test_SOURCES = assignschedcode_test.c
assignschedcode_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_audioinfo_test_SOURCES = audioinfo_test.c
audioinfo_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_audiostore_test_SOURCES = audiostore_test.c
audiostore_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_copyaudio_test_SOURCES = copyaudio_test.c
copyaudio_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_createticket_test_SOURCES = createticket_test.c
createticket_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_deleteaudio_test_SOURCES = deleteaudio_test.c
deleteaudio_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_deletelog_test_SOURCES = deletelog_test.c common.c common.h
deletelog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_editcart_test_SOURCES = editcart_test.c
editcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_editcut_test_SOURCES = editcut_test.c
editcut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_exportcart_test_SOURCES = exportcart_test.c
exportcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_exportpeaks_test_SOURCES = exportpeaks_test.c
exportpeaks_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_getversion_test_SOURCES = getversion_test.c
getversion_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_getuseragent_test_SOURCES = getuseragent_test.c
getuseragent_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_importcart_test_SOURCES = importcart_test.c
importcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcart_test_SOURCES = listcart_test.c
listcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcartcuts_test_SOURCES = listcartcuts_test.c
listcartcuts_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcarts_test_SOURCES = listcarts_test.c
listcarts_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcartscuts_test_SOURCES = listcartscuts_test.c
listcartscuts_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcartschedcodes_test_SOURCES = listcartschedcodes_test.c
listcartschedcodes_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcut_test_SOURCES = listcut_test.c
listcut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listcuts_test_SOURCES = listcuts_test.c
listcuts_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listgroup_test_SOURCES = listgroup_test.c
listgroup_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listgroups_test_SOURCES = listgroups_test.c
dist_listgroup_test_SOURCES = listgroup_test.c
dist_listcarts_test_SOURCES = listcarts_test.c
dist_listcart_test_SOURCES = listcart_test.c
dist_listcuts_test_SOURCES = listcuts_test.c
dist_listcut_test_SOURCES = listcut_test.c
dist_listschedcodes_test_SOURCES = listschedcodes_test.c
dist_listsystemsettings_test_SOURCES = listsystemsettings_test.c
dist_assignschedcode_test_SOURCES = assignschedcode_test.c
dist_unassignschedcode_test_SOURCES = unassignschedcode_test.c
dist_addcart_test_SOURCES = addcart_test.c
dist_addcut_test_SOURCES = addcut_test.c
dist_addlog_test_SOURCES = addlog_test.c\
common.c common.h
dist_deletelog_test_SOURCES = deletelog_test.c\
common.c common.h
dist_removecart_test_SOURCES = removecart_test.c
dist_removecut_test_SOURCES = removecut_test.c
dist_audioinfo_test_SOURCES = audioinfo_test.c
dist_createticket_test_SOURCES = createticket_test.c
dist_audiostore_test_SOURCES = audiostore_test.c
dist_trimaudio_test_SOURCES = trimaudio_test.c
dist_listlog_test_SOURCES = listlog_test.c
dist_listlogs_test_SOURCES = listlogs_test.c
dist_savelog_test_SOURCES = savelog_test.c \
common.c common.h
dist_listservices_test_SOURCES = listservices_test.c
dist_editcart_test_SOURCES = editcart_test.c
dist_editcut_test_SOURCES = editcut_test.c
dist_importcart_test_SOURCES = importcart_test.c
dist_exportcart_test_SOURCES = exportcart_test.c
dist_exportpeaks_test_SOURCES = exportpeaks_test.c
dist_deleteaudio_test_SOURCES = deleteaudio_test.c
dist_copyaudio_test_SOURCES = copyaudio_test.c
dist_getversion_test_SOURCES = getversion_test.c
dist_getuseragent_test_SOURCES = getuseragent_test.c
listgroups_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listgroup_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listcarts_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listcuts_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listcut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listschedcodes_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listsystemsettings_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
assignschedcode_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
listcartschedcodes_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
unassignschedcode_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
addcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
addcut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
addlog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
deletelog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
removecart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
removecut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
audioinfo_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
createticket_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
audiostore_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
trimaudio_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listlog_test_SOURCES = listlog_test.c
listlog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listlogs_test_SOURCES = listlogs_test.c
listlogs_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
savelog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listschedcodes_test_SOURCES = listschedcodes_test.c
listschedcodes_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listservices_test_SOURCES = listservices_test.c
listservices_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
editcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
editcut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
importcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
exportcart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
exportpeaks_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
deleteaudio_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
copyaudio_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
getversion_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
getuseragent_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_listsystemsettings_test_SOURCES = listsystemsettings_test.c
listsystemsettings_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_removecart_test_SOURCES = removecart_test.c
removecart_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_removecut_test_SOURCES = removecut_test.c
removecut_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_savelog_test_SOURCES = savelog_test.c common.c common.h
savelog_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_trimaudio_test_SOURCES = trimaudio_test.c
trimaudio_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
dist_unassignschedcode_test_SOURCES = unassignschedcode_test.c
unassignschedcode_test_LDADD = -lrivwebcapi -lexpat -lcurl -lm
CLEANFILES = *~\
moc_*

View File

@@ -0,0 +1,320 @@
/* listcartcuts_test.c
*
* Test the listcartcuts library.
*
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
* (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <rivwebcapi/rd_listcartcuts.h>
#include <rivwebcapi/rd_createticket.h>
#include <rivwebcapi/rd_getuseragent.h>
#include <rivwebcapi/rd_getversion.h>
void dump_datetime(const char *label,struct tm *tm)
{
printf(" %s year value: %d\n",label,tm->tm_year);
printf(" %s mon value: %d\n",label,tm->tm_mon);
printf(" %s day value: %d\n",label,tm->tm_mday);
printf(" %s wday value: %d\n",label,tm->tm_wday);
printf(" %s hour value: %d\n",label,tm->tm_hour);
printf(" %s min value: %d\n",label,tm->tm_min);
printf(" %s sec value: %d\n",label,tm->tm_sec);
printf(" %s isdst: %d\n",label,tm->tm_isdst);
}
void dump_cut(struct rd_cut *cut)
{
printf("Cut %04u:\n",cut->cut_cut_number);
printf(" Cut Name: %s\n",cut->cut_name);
printf(" Evergreen: %d\n",cut->cut_evergreen);
printf(" Description: %s\n",cut->cut_description);
printf(" Outcue: %s\n",cut->cut_outcue);
printf(" ISRC: %s\n",cut->cut_isrc);
printf(" ISCI: %s\n",cut->cut_isci);
printf(" Length: %u\n",cut->cut_length);
dump_datetime("Origin Datetime",&cut->cut_origin_datetime);
dump_datetime("Origin Datetime",&cut->cut_origin_datetime);
dump_datetime(" Start Datetime",&cut->cut_start_datetime);
dump_datetime(" End Datetime",&cut->cut_end_datetime);
printf(" Sunday: %d\n",cut->cut_sun);
printf(" Monday: %d\n",cut->cut_mon);
printf(" Tuesday: %d\n",cut->cut_tue);
printf(" Wednesday: %d\n",cut->cut_wed);
printf(" Thursday: %d\n",cut->cut_thu);
printf(" Friday: %d\n",cut->cut_fri);
printf(" Saturday: %d\n",cut->cut_sat);
printf(" Start Daypart: %s\n",cut->cut_start_daypart);
printf(" End Daypart: %s\n",cut->cut_end_daypart);
printf(" Origin Name: %s\n",cut->cut_origin_name);
printf(" Origin Login Name: %s\n",cut->cut_origin_login_name);
printf(" Source Hostname: %s\n",cut->cut_source_hostname);
printf(" Weight: %u\n",cut->cut_weight);
dump_datetime("Last Play Datetime",&cut->cut_last_play_datetime);
printf(" Play Counter: %u\n",cut->cut_play_counter);
printf(" Coding Format: %u\n",cut->cut_coding_format);
printf(" Sample Rate: %u\n",cut->cut_sample_rate);
printf(" Bit Rate: %u\n",cut->cut_bit_rate);
printf(" Channels: %u\n",cut->cut_channels);
printf(" Play Gain: %d\n",cut->cut_play_gain);
printf(" Start Point: %d\n",cut->cut_start_point);
printf(" End Point: %d\n",cut->cut_end_point);
printf(" Fade Up Point: %d\n",cut->cut_start_point);
printf(" Fade Down Point: %d\n",cut->cut_end_point);
printf(" Segue Start Point: %d\n",cut->cut_segue_start_point);
printf(" Segue End Point: %d\n",cut->cut_segue_end_point);
printf(" Segue Gain: %d\n",cut->cut_segue_gain);
printf(" Hook Start Point: %d\n",cut->cut_hook_start_point);
printf(" Hook End Point: %d\n",cut->cut_hook_end_point);
printf(" Talk Start Point: %d\n",cut->cut_talk_start_point);
printf(" Talk End Point: %d\n",cut->cut_talk_end_point);
}
void dump_cart(struct rd_cart *cart)
{
printf(" Cart Number: %d\n",cart->cart_number);
printf(" Cart Type: %d\n",cart->cart_type);
printf(" Group Name: %s\n",cart->cart_grp_name);
printf(" Cart Title: %s\n",cart->cart_title);
printf(" Cart Artist: %s\n",cart->cart_artist);
printf(" Cart Album: %s\n",cart->cart_album);
printf(" Cart Year: %d\n",cart->cart_year);
printf(" Cart Label: %s\n",cart->cart_label);
printf(" Cart Client: %s\n",cart->cart_client);
printf(" Cart Agency: %s\n",cart->cart_agency);
printf(" Cart Publisher: %s\n",cart->cart_publisher);
printf(" Cart Composer: %s\n",cart->cart_composer);
printf(" Cart Conductor: %s\n",cart->cart_conductor);
printf(" Cart User Defined: %s\n",cart->cart_user_defined);
printf(" Cart Usage Code: %d\n",cart->cart_usage_code);
printf(" Cart Forced Length: %d\n",cart->cart_forced_length);
printf(" Cart Average Length: %d\n",cart->cart_average_length);
printf(" Cart Length Deviation: %d\n",cart->cart_length_deviation);
printf("Cart Average Segue Length: %d\n",cart->cart_average_segue_length);
printf(" Cart Average Hook Length: %d\n",cart->cart_average_hook_length);
printf(" Cart Cut Quantity: %u\n",cart->cart_cut_quantity);
printf(" Cart Last Cut Played: %03u\n",cart->cart_last_cut_played);
printf(" Cart Validity: %u\n",cart->cart_validity);
printf(" Cart Enforce Length: %d\n",cart->cart_enforce_length);
printf(" Cart Asyncronous: %d\n",cart->cart_asyncronous);
printf(" Cart Owner: %s\n",cart->cart_owner);
dump_datetime("Cart Metadata",&cart->cart_metadata_datetime);
}
int main(int argc,char *argv[])
{
int i;
int j;
struct rd_cart *carts=0;
char buf[BUFSIZ];
char *p;
long int cart=0;
unsigned numrecs;
char *host;
char *user;
char *passwd;
char ticket[41]="";
char user_agent[255]={0};
/* Get the Rivendell Host, User and Password if set in env */
if (getenv("RIVHOST")!=NULL) {
host = getenv("RIVHOST");
}
else {
host="localhost";
}
if (getenv("RIVUSER")!=NULL) {
user = getenv("RIVUSER");
}
else {
user="USER";
}
if (getenv("RIVPASS")!=NULL) {
passwd = getenv("RIVPASS");
}
else {
passwd = "";
}
printf("Please enter the Cart Number ==> ");
if (fgets(buf,sizeof(buf),stdin) != NULL)
{
cart = strtol(buf, &p,10);
if ( (buf[0] != '\n') &&
((*p != '\n') && (*p != '\0')))
{
fprintf(stderr," Illegal Characters detected! Exiting.\n");
exit(0);
}
}
// Add the User Agent and Version
strcat(user_agent,RD_GetUserAgent());
strcat(user_agent,RD_GetVersion());
strcat(user_agent," (Test Suite)");
//
// Call the function
//
int result= RD_ListCartCuts(&carts,
host,
user,
passwd,
ticket,
(unsigned)cart,
user_agent,
&numrecs);
if(result<0) {
fprintf(stderr,"Error: Web function Failure!\n");
exit(256);
}
if ((result< 200 || result > 299) &&
(result != 0))
{
switch(result) {
case 400:
fprintf(stderr,"ERROR: Missing Cart Number! \n");
break;
case 404:
fprintf(stderr,"ERROR: No Such Cart Exists! \n");
break;
default:
fprintf(stderr, "Unknown Error occurred ==> %d",result);
}
exit(256);
}
//
// List the results
//
for(i=0;i<numrecs;i++) {
dump_cart(&carts[i]);
printf("\n");
for(j=0;j<carts[i].cart_cut_quantity;j++) {
dump_cut(RD_ListCartCuts_GetCut(&carts[i],j));
printf("\n");
}
}
//
// Free the cart list when finished with it
//
RD_ListCartCuts_Free(carts);
// Add test of create_ticket function
struct rd_ticketinfo *myticket=0;
numrecs=0;
result = RD_CreateTicket( &myticket,
host,
user,
passwd,
user_agent,
&numrecs);
if ((result< 200 || result > 299) &&
(result != 0))
{
switch(result) {
case 403:
fprintf(stderr," ERROR: Invalid User Information During Create Ticket\n");
break;
default:
fprintf(stderr, "Unknown Error occurred ==> %d\n",result);
}
exit(256);
}
// We got a ticket created - use it and do the call again
//
// List the Results
//
for(i=0;i<numrecs;i++) {
printf(" Ticket: %s\n",myticket[i].ticket);
dump_datetime("Ticket Expire",&myticket->tkt_expiration_datetime);
printf("\n");
}
user="";
passwd="";
strcpy( ticket,myticket->ticket);
fprintf(stderr, "Ticket was copied - = %s\n",ticket);
//
// Call the function
//
result= RD_ListCartCuts(&carts,
host,
user,
passwd,
ticket,
(unsigned)cart,
user_agent,
&numrecs);
if(result<0) {
fprintf(stderr,"Error: Web function Failure!\n");
exit(256);
}
if ((result< 200 || result > 299) &&
(result != 0))
{
switch(result) {
case 400:
fprintf(stderr,"ERROR: Missing Cart Number! \n");
break;
case 404:
fprintf(stderr,"ERROR: No Such Cart Exists! \n");
break;
default:
fprintf(stderr, "Unknown Error occurred ==> %d",result);
}
exit(256);
}
//
// List the results
//
for(i=0;i<numrecs;i++) {
dump_cart(&carts[i]);
printf("\n");
for(j=0;j<carts[i].cart_cut_quantity;j++) {
dump_cut(RD_ListCartCuts_GetCut(&carts[i],j));
printf("\n");
}
}
//
// Free the cart list when finished with it
//
RD_ListCartCuts_Free(carts);
exit(0);
}

View File

@@ -0,0 +1,305 @@
/* listcartscuts_test.c
*
* Test the listcartscuts library.
*
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
* (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <rivwebcapi/rd_listcartscuts.h>
#include <rivwebcapi/rd_createticket.h>
#include <rivwebcapi/rd_getuseragent.h>
#include <rivwebcapi/rd_getversion.h>
void dump_datetime(const char *label,struct tm *tm)
{
printf(" %s year value: %d\n",label,tm->tm_year);
printf(" %s mon value: %d\n",label,tm->tm_mon);
printf(" %s day value: %d\n",label,tm->tm_mday);
printf(" %s wday value: %d\n",label,tm->tm_wday);
printf(" %s hour value: %d\n",label,tm->tm_hour);
printf(" %s min value: %d\n",label,tm->tm_min);
printf(" %s sec value: %d\n",label,tm->tm_sec);
printf(" %s isdst: %d\n",label,tm->tm_isdst);
}
void dump_cut(struct rd_cut *cut)
{
printf("Cut %04u:\n",cut->cut_cut_number);
printf(" Cut Name: %s\n",cut->cut_name);
printf(" Evergreen: %d\n",cut->cut_evergreen);
printf(" Description: %s\n",cut->cut_description);
printf(" Outcue: %s\n",cut->cut_outcue);
printf(" ISRC: %s\n",cut->cut_isrc);
printf(" ISCI: %s\n",cut->cut_isci);
printf(" Length: %u\n",cut->cut_length);
dump_datetime("Origin Datetime",&cut->cut_origin_datetime);
dump_datetime("Origin Datetime",&cut->cut_origin_datetime);
dump_datetime(" Start Datetime",&cut->cut_start_datetime);
dump_datetime(" End Datetime",&cut->cut_end_datetime);
printf(" Sunday: %d\n",cut->cut_sun);
printf(" Monday: %d\n",cut->cut_mon);
printf(" Tuesday: %d\n",cut->cut_tue);
printf(" Wednesday: %d\n",cut->cut_wed);
printf(" Thursday: %d\n",cut->cut_thu);
printf(" Friday: %d\n",cut->cut_fri);
printf(" Saturday: %d\n",cut->cut_sat);
printf(" Start Daypart: %s\n",cut->cut_start_daypart);
printf(" End Daypart: %s\n",cut->cut_end_daypart);
printf(" Origin Name: %s\n",cut->cut_origin_name);
printf(" Origin Login Name: %s\n",cut->cut_origin_login_name);
printf(" Source Hostname: %s\n",cut->cut_source_hostname);
printf(" Weight: %u\n",cut->cut_weight);
dump_datetime("Last Play Datetime",&cut->cut_last_play_datetime);
printf(" Play Counter: %u\n",cut->cut_play_counter);
printf(" Coding Format: %u\n",cut->cut_coding_format);
printf(" Sample Rate: %u\n",cut->cut_sample_rate);
printf(" Bit Rate: %u\n",cut->cut_bit_rate);
printf(" Channels: %u\n",cut->cut_channels);
printf(" Play Gain: %d\n",cut->cut_play_gain);
printf(" Start Point: %d\n",cut->cut_start_point);
printf(" End Point: %d\n",cut->cut_end_point);
printf(" Fade Up Point: %d\n",cut->cut_start_point);
printf(" Fade Down Point: %d\n",cut->cut_end_point);
printf(" Segue Start Point: %d\n",cut->cut_segue_start_point);
printf(" Segue End Point: %d\n",cut->cut_segue_end_point);
printf(" Segue Gain: %d\n",cut->cut_segue_gain);
printf(" Hook Start Point: %d\n",cut->cut_hook_start_point);
printf(" Hook End Point: %d\n",cut->cut_hook_end_point);
printf(" Talk Start Point: %d\n",cut->cut_talk_start_point);
printf(" Talk End Point: %d\n",cut->cut_talk_end_point);
}
void dump_cart(struct rd_cart *cart)
{
printf(" Cart Number: %d\n",cart->cart_number);
printf(" Cart Type: %d\n",cart->cart_type);
printf(" Group Name: %s\n",cart->cart_grp_name);
printf(" Cart Title: %s\n",cart->cart_title);
printf(" Cart Artist: %s\n",cart->cart_artist);
printf(" Cart Album: %s\n",cart->cart_album);
printf(" Cart Year: %d\n",cart->cart_year);
printf(" Cart Label: %s\n",cart->cart_label);
printf(" Cart Client: %s\n",cart->cart_client);
printf(" Cart Agency: %s\n",cart->cart_agency);
printf(" Cart Publisher: %s\n",cart->cart_publisher);
printf(" Cart Composer: %s\n",cart->cart_composer);
printf(" Cart Conductor: %s\n",cart->cart_conductor);
printf(" Cart User Defined: %s\n",cart->cart_user_defined);
printf(" Cart Usage Code: %d\n",cart->cart_usage_code);
printf(" Cart Forced Length: %d\n",cart->cart_forced_length);
printf(" Cart Average Length: %d\n",cart->cart_average_length);
printf(" Cart Length Deviation: %d\n",cart->cart_length_deviation);
printf("Cart Average Segue Length: %d\n",cart->cart_average_segue_length);
printf(" Cart Average Hook Length: %d\n",cart->cart_average_hook_length);
printf(" Cart Cut Quantity: %u\n",cart->cart_cut_quantity);
printf(" Cart Last Cut Played: %03u\n",cart->cart_last_cut_played);
printf(" Cart Validity: %u\n",cart->cart_validity);
printf(" Cart Enforce Length: %d\n",cart->cart_enforce_length);
printf(" Cart Asyncronous: %d\n",cart->cart_asyncronous);
printf(" Cart Owner: %s\n",cart->cart_owner);
dump_datetime("Cart Metadata",&cart->cart_metadata_datetime);
}
int main(int argc,char *argv[])
{
int i;
int j;
struct rd_cart *carts=0;
unsigned numrecs;
char *host;
char *user;
char *passwd;
char ticket[41]="";
char user_agent[255]={0};
/* Get the Rivendell Host, User and Password if set in env */
if (getenv("RIVHOST")!=NULL) {
host = getenv("RIVHOST");
}
else {
host="localhost";
}
if (getenv("RIVUSER")!=NULL) {
user = getenv("RIVUSER");
}
else {
user="USER";
}
if (getenv("RIVPASS")!=NULL) {
passwd = getenv("RIVPASS");
}
else {
passwd = "";
}
// Add the User Agent and Version
strcat(user_agent,RD_GetUserAgent());
strcat(user_agent,RD_GetVersion());
strcat(user_agent," (Test Suite)");
//
// Call the function
//
int result= RD_ListCartsCuts(&carts,
host,
user,
passwd,
ticket,
"",
"",
"Audio",
user_agent,
&numrecs);
if(result<0) {
fprintf(stderr,"Error: Web function Failure!\n");
exit(256);
}
if ((result< 200 || result > 299) &&
(result != 0))
{
switch(result) {
case 403:
fprintf(stderr,"ERROR: Invalid User Authentification \n");
break;
case 404:
fprintf(stderr,"ERROR: No Such Group Exists! \n");
break;
default:
fprintf(stderr, "Unknown Error occurred ==> %d\n",result);
}
exit(256);
}
//
// List the results
//
for(i=0;i<numrecs;i++) {
dump_cart(&carts[i]);
printf("\n");
/*
for(j=0;j<carts[i].cart_cut_quantity;j++) {
dump_cut(RD_ListCartCuts_GetCut(&carts[i],j));
printf("\n");
}
*/
}
//
// Free the cart list when finished with it
//
RD_ListCartsCuts_Free(carts,numrecs);
// Add test of create_ticket function
struct rd_ticketinfo *myticket=0;
numrecs=0;
result = RD_CreateTicket( &myticket,
host,
user,
passwd,
user_agent,
&numrecs);
if ((result< 200 || result > 299) &&
(result != 0))
{
switch(result) {
case 403:
fprintf(stderr," ERROR: Invalid User Information During Create Ticket\n");
break;
default:
fprintf(stderr, "Unknown Error occurred ==> %d\n",result);
}
exit(256);
}
// We got a ticket created - use it and do the call again
//
// List the Results
//
for(i=0;i<numrecs;i++) {
printf(" Ticket: %s\n",myticket[i].ticket);
dump_datetime("Ticket Expire",&myticket->tkt_expiration_datetime);
printf("\n");
}
user="";
passwd="";
strcpy( ticket,myticket->ticket);
fprintf(stderr, "Ticket was copied - = %s\n",ticket);
//
// Call the function
//
result= RD_ListCartsCuts(&carts,
host,
user,
passwd,
ticket,
"",
"",
"Audio",
user_agent,
&numrecs);
if(result<0) {
fprintf(stderr,"Error: Web function Failure!\n");
exit(256);
}
if ((result< 200 || result > 299) &&
(result != 0))
{
switch(result) {
case 403:
fprintf(stderr," ERROR: Invalid User Information During Create Ticket\n");
break;
default:
fprintf(stderr, "Unknown Error occurred ==> %d\n",result);
}
exit(256);
}
//
// List the results
//
for(i=0;i<numrecs;i++) {
dump_cart(&carts[i]);
printf("\n");
for(j=0;j<carts[i].cart_cut_quantity;j++) {
dump_cut(RD_ListCartsCuts_GetCut(carts,i,j));
printf("\n");
}
}
//
// Free the cart list when finished with it
//
RD_ListCartsCuts_Free(carts,numrecs);
exit(0);
}

View File

@@ -29,13 +29,9 @@ Driver=QMYSQL3
; The interval between 'keep-alive' queries to the MySQL server (seconds)
HeartbeatInterval=360
; The following three settings control the attributes of new DB tables
; The following setting controls the attributes of new DB tables
; created by Rivendell.
;Engine=MyISAM
; 'Charset' and 'Collation' should *not* changed except for development
; purposes.
;Charset=utf8
;Collation=utf8_general_ci
[AudioStore]
MountSource=

View File

@@ -494,6 +494,7 @@ AC_CONFIG_FILES([rivendell.spec \
utils/rdclilogedit/Makefile \
utils/rdcollect/Makefile \
utils/rdconvert/Makefile \
utils/rddbconfig/Makefile \
utils/rddbmgr/Makefile \
utils/rddelete/Makefile \
utils/rddgimport/Makefile \

View File

@@ -6,7 +6,7 @@
<refmeta>
<refentrytitle>rddbmgr</refentrytitle>
<manvolnum>8</manvolnum>
<refmiscinfo class='source'>June 2018</refmiscinfo>
<refmiscinfo class='source'>October 2018</refmiscinfo>
<refmiscinfo class='manual'>Linux Audio Manual</refmiscinfo>
</refmeta>
<refnamediv>
@@ -151,30 +151,6 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--mysql-charset=</option><replaceable>charset</replaceable></term>
<listitem>
<para>
Configure new tables to use character set
<replaceable>charset</replaceable>.
Default is to use the corresponding value found in the
<userinput>[mySQL]</userinput> section of
<command>rd.conf</command><manvolnum>5</manvolnum>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--mysql-collation=</option><replaceable>collation</replaceable></term>
<listitem>
<para>
Configure new tables to use collation
<replaceable>collation</replaceable>.
Default is to use the corresponding value found in the
<userinput>[mySQL]</userinput> section of
<command>rd.conf</command><manvolnum>5</manvolnum>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
@@ -484,6 +460,15 @@
do not exist in the reverted schema will be irrecoverably lost!
</para>
</warning>
<warning>
<para>
Schema versions earlier than <computeroutput>297</computeroutput>
(Rivendell version <computeroutput>3.0.0</computeroutput>) utilize
the <computeroutput>Latin1</computeroutput> character set; reverting
a database containing non-Latin1 characters to these schema versions
will cause irreversible corruption of those characters!
</para>
</warning>
</refsect1>
<refsect1 id='see_also'><title>See Also</title>

View File

@@ -88,12 +88,18 @@ all-local: rd_addcart.html\
rd_listcartschedcodes.html\
rd_listcartschedcodes.pdf\
rd_listcartschedcodes.xml\
rd_listcarts.html\
rd_listcarts.pdf\
rd_listcarts.xml\
rd_listcart.html\
rd_listcart.pdf\
rd_listcart.xml\
rd_listcartcuts.html\
rd_listcartcuts.pdf\
rd_listcartcuts.xml\
rd_listcarts.html\
rd_listcarts.pdf\
rd_listcarts.xml\
rd_listcartscuts.html\
rd_listcartscuts.pdf\
rd_listcartscuts.xml\
rd_listcuts.html\
rd_listcuts.pdf\
rd_listcuts.xml\
@@ -155,8 +161,10 @@ man_MANS = rd_addcart.7\
rd_getversion.7\
rd_import.7\
rd_listcartschedcodes.7\
rd_listcarts.7\
rd_listcart.7\
rd_listcartcuts.7\
rd_listcarts.7\
rd_listcartscuts.7\
rd_listcuts.7\
rd_listcut.7\
rd_listgroups.7\
@@ -246,13 +254,22 @@ EXTRA_DIST = rd_addcart.7\
rd_listcartschedcodes.html\
rd_listcartschedcodes.pdf\
rd_listcartschedcodes.xml\
rd_listcart.7\
rd_listcart.html\
rd_listcart.pdf\
rd_listcart.xml\
rd_listcartcuts.7\
rd_listcartcuts.html\
rd_listcartcuts.pdf\
rd_listcartcuts.xml\
rd_listcarts.7\
rd_listcarts.html\
rd_listcarts.pdf\
rd_listcarts.xml\
rd_listcart.7\
rd_listcart.html\
rd_listcart.pdf\
rd_listcartscuts.7\
rd_listcartscuts.html\
rd_listcartscuts.pdf\
rd_listcartscuts.xml\
rd_listcart.xml\
rd_listcuts.7\
rd_listcuts.html\

View File

@@ -194,104 +194,12 @@
</table>
<para>
When successful function will return the number of records sent (numrecs) and a rd_cart structure which
is stored in the provided memory locations. The rd_cart structure has the following fields:
When successful function will return the number of records sent
(numrecs) and a rd_cart structure which
is stored in the provided memory locations. (See the
<command>rd_listcartcuts</command><manvolnum>7</manvolnum> man page
for a listing of the rd_cart structure).
</para>
<programlisting>
struct rd_cart {
unsigned cart_number; /* Cart Number */
unsigned cart_type; /* Cart Type */
char cart_grp_name[11]; /* Group Name */
char cart_title[256]; /* Cart Title */
char cart_artist[256]; /* Artist */
char cart_album[256]; /* Album */
int cart_year; /* Year */
char cart_label[65]; /* Label */
char cart_client[65]; /* Client */
char cart_agency[65]; /* Agency */
char cart_publisher[65]; /* Publisher */
char cart_composer[65]; /* Composer */
char cart_conductor[65]; /* Conductor */
char cart_user_defined[256]; /* User Defined */
int cart_usage_code; /* Usage Code */
int cart_forced_length; /* Forced Length */
int cart_average_length; /* AverageLength */
int cart_length_deviation; /* Length Deviation */
int cart_average_segue_length; /* Average Segue Length */
int cart_average_hook_length; /* Average Hook Length */
unsigned cart_cut_quantity; /* Cut Quantity */
unsigned cart_last_cut_played; /* Last Cut Played */
unsigned cart_validity; /* Validity */
int cart_enforce_length; /* Enforce Length Flag */
int cart_asyncronous; /* Asyncronous Flag */
char cart_owner[65]; /* Owner */
struct tm cart_metadata_datetime; /* Metatdata Datetime */
char cart_notes[1024]; /* Notes */
};
All character arrays above are the sizes listed and must be null-terminated.
The cart number is a unsigned integer.
The cart_type is 1=Audio,2=Macro.
The cart_grp_name must be a valid Rivendell DB Group.
The cart_title is 255 characters.
The cart_artist is 255 characters.
The cart_album is 255 characters.
The cart_year is a date (YYYY).
The cart_label is 64 characters.
The cart_client is 64 characters.
The cart_agency is 64 characters.
The cart_publisher is 64 characters.
The cart_composer is 64 characters.
The cart_conductor is 64 characters.
The cart_user_defined is 255 characters.
The cart_usage_code is 0=Feature, 1=Theme Open,
2=Theme Close, 3=Theme Open/Close,
4=Background, 5=Comm/Promo
The cart_forced_length is in milliseconds.
The cart_average_length is in milliseconds.
The cart_length_deviation is in milliseconds.
The cart_average_segue_length is in milliseconds.
The cart_average_hook_length is in milliseconds.
The cart_cut_quantity is number of cuts.
The cart_last_cut_played is self explanatory.
The cart_validity is 0=NeverValid, 1=Conditional, 2=AlwaysValid
3=EvergreenValid, 4=FutureValid
The cart_enforce_length is True(1) or False(0).
The cart_asyncronous is True(1) or False(0).
The cart_owner is 64 characters.
The cart_metadata_datetime is a struct tm.
The cart_user_notes is a character array up to 1024 characters.
</programlisting>
</refsect1>
<refsect2 id='returns'><title>RETURN VALUE</title>
<para>

View File

@@ -0,0 +1,352 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<refentry id="stdin" xmlns="http://docbook.org/ns/docbook" version="5.0">
<!--
Header
-->
<refmeta>
<refentrytitle>RD_ListCartCuts</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo class='source'>October 2015</refmiscinfo>
<refmiscinfo class='manual'>Rivendell C Library Manual</refmiscinfo>
</refmeta>
<refnamediv>
<refname>rd_listcartcuts</refname>
<refpurpose>Rivendell List Cart/Cuts C Library Function</refpurpose>
</refnamediv>
<info>
<author>
<personname>
<firstname>Todd</firstname>
<surname>Baker</surname>
<email>bakert@rfa.org</email>
</personname>
<contrib>Rivendell C Library Author</contrib>
</author>
</info>
<!--
Body
-->
<refsynopsisdiv id='synopsis'>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;rivwebcapi/rd_listcartcuts.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>RD_ListCartCuts</function></funcdef>
<paramdef> struct rd_cart * <parameter>cart[]</parameter></paramdef>
<paramdef>const char <parameter>hostname[]</parameter></paramdef>
<paramdef>const char <parameter>username[]</parameter></paramdef>
<paramdef>const char <parameter>passwd[]</parameter></paramdef>
<paramdef>const char <parameter>ticket[]</parameter></paramdef>
<paramdef>const unsigned <parameter>cartnumber</parameter></paramdef>
<paramdef>const char <parameter>user_agent[]</parameter></paramdef>
<paramdef>unsigned * <parameter>numrecs</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>struct rd_cut *<function>RD_ListCartCuts_GetCut</function></funcdef>
<paramdef> struct rd_cart * <parameter>cart</parameter></paramdef>
<paramdef>int <parameter>cut_rec</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>void <function>RD_ListCartCuts_Free</function></funcdef>
<paramdef> struct rd_cart * <parameter>cart</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id='description'><title>Description</title>
<para>
<command>RD_ListCartCuts</command> is the function to use to list the
fields within a single cart that already exists in the Rivendell Database.
Unlike <command>RD_ListCart</command><manvolnum>7</manvolnum>,
<command>RD_ListCartCuts</command><manvolnum>7</manvolnum> will
also fetch the full list of cuts associated with the requested cart.
</para>
<table xml:id="ex.listcart" frame="all">
<title>RD_ListCartCuts function call fields</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname="FIELD NAME" />
<colspec colname="FIELD TYPE" />
<colspec colname="MEANING" />
<colspec colname="REMARKS" />
<thead>
<row>
<entry>
FIELD NAME
</entry>
<entry>
FIELD TYPE
</entry>
<entry>
MEANING
</entry>
<entry>
REMARKS
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
*cart
</entry>
<entry>
Pointer to rd_cart structure
</entry>
<entry>
Memory location to store cart information
</entry>
<entry>
Mandatory
</entry>
</row>
<row>
<entry>
hostname
</entry>
<entry>
Character Array
</entry>
<entry>
Name Of Rivendell DB Host
</entry>
<entry>
Mandatory
</entry>
</row>
<row>
<entry>
username
</entry>
<entry>
Character Array
</entry>
<entry>
Rivendell User Name
</entry>
<entry>
Mandatory When NO Ticket Provided
</entry>
</row>
<row>
<entry>
passwd
</entry>
<entry>
Character Array
</entry>
<entry>
Rivendell User Password
</entry>
<entry>
Mandatory When NO Ticket Provided
</entry>
</row>
<row>
<entry>
ticket
</entry>
<entry>
Character Array
</entry>
<entry>
Rivendell Authentification Ticket
</entry>
<entry>
Mandatory When NO User/Password Pair Provided.
</entry>
</row>
<row>
<entry>
cartnumber
</entry>
<entry>
unsigned integer
</entry>
<entry>
Cart Number
</entry>
<entry>
Mandatory
</entry>
</row>
<row>
<entry>
user_agent
</entry>
<entry>
Character Array
</entry>
<entry>
User Agent Value put into HTTP request
</entry>
<entry>
Optional (default is Rivendell-C-API/x.x.x)
</entry>
</row>
<row>
<entry>
*numrecs
</entry>
<entry>
pointer to integer
</entry>
<entry>
memory location for number of records returned
</entry>
<entry>
Mandatory
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
When successful the function will return the number of records sent
(numrecs) and a rd_cart structure which
is stored in the provided memory locations. The rd_cart structure has
the following fields:
</para>
<programlisting>
struct rd_cart {
unsigned cart_number; /* Cart Number */
unsigned cart_type; /* Cart Type */
char cart_grp_name[41]; /* Group Name */
char cart_title[1021]; /* Cart Title */
char cart_artist[1021]; /* Artist */
char cart_album[1021]; /* Album */
int cart_year; /* Year */
char cart_label[257]; /* Label */
char cart_client[257]; /* Client */
char cart_agency[257]; /* Agency */
char cart_publisher[257]; /* Publisher */
char cart_composer[257]; /* Composer */
char cart_conductor[257]; /* Conductor */
char cart_user_defined[1021]; /* User Defined */
int cart_usage_code; /* Usage Code */
int cart_forced_length; /* Forced Length */
int cart_average_length; /* AverageLength */
int cart_length_deviation; /* Length Deviation */
int cart_average_segue_length; /* Average Segue Length */
int cart_average_hook_length; /* Average Hook Length */
unsigned cart_cut_quantity; /* Cut Quantity */
unsigned cart_last_cut_played; /* Last Cut Played */
unsigned cart_validity; /* Validity */
int cart_enforce_length; /* Enforce Length Flag */
int cart_asyncronous; /* Asyncronous Flag */
char cart_owner[257]; /* Owner */
struct tm cart_metadata_datetime; /* Metatdata Datetime */
char cart_notes[4096]; /* Notes */
struct rd_cut **cart_cuts; /* Cut list */
};
</programlisting>
<para>
All character arrays use UTF-8 encoding and are null-terminated.
</para>
<refsect2 id='access_cut_information'><title>Accessing Cut Information</title>
<para>
Information about the cuts associated with the cart can be accessed
from the returned rd_cart structure through use of the
<command>RD_ListCartCuts_GetCut()</command> function.
The <parameter>cut_rec</parameter> parameter should range between
<userinput>0</userinput> and one less than the
value of the <parameter>cart_cut_quantity</parameter> member of the
cart's rd_cart structure.
</para>
<para>
Cut information is returned in the form of a rd_cut structure, which
has the following fields:
</para>
<programlisting>
struct rd_cut {
char cut_name[41]; /* Cut Name */
unsigned cut_cart_number; /* Parent Cart Number */
unsigned cut_cut_number; /* Cut Number */
int cut_evergreen; /* Boolean */
char cut_description[257]; /* Description */
char cut_outcue[257]; /* Outcue */
char cut_isrc[49]; /* International Standard Recording Code */
char cut_isci[129]; /* Industry Standard Commercial Identifier */
unsigned cut_length; /* Milliseconds */
struct tm cut_origin_datetime; /* Origin Datetime */
struct tm cut_start_datetime; /* Start Datetime */
struct tm cut_end_datetime; /* End Datetime */
int cut_sun; /* Playable on Sunday */
int cut_mon; /* Playable on Monday */
int cut_tue; /* Playable on Tuesday */
int cut_wed; /* Playable on Wednesday */
int cut_thu; /* Playable on Thursday */
int cut_fri; /* Playable on Friday */
int cut_sat; /* Playable on Saturday */
char cut_start_daypart[15]; /* Start Daypart */
char cut_end_daypart[15]; /* End Daypart */
char cut_origin_name[257]; /* Hostname of Ingestion System */
char cut_origin_login_name[1021]; /* RD Username on Ingestion System */
char cut_source_hostname[1021]; /* Hostname of Originating System */
unsigned cut_weight; /* Cut Weighting */
struct tm cut_last_play_datetime; /* Datetime of Last OnAir Play-out */
unsigned cut_play_counter; /* Number of Times Played */
unsigned cut_local_counter; /* Plays Since Rotation Changed */
unsigned cut_validity; /* Cut Validity */
unsigned cut_coding_format; /* 0 = PCM, 1 = MPEG */
unsigned cut_sample_rate; /* Samples per Second */
unsigned cut_bit_rate; /* Bits per Second */
unsigned cut_channels; /* Audio Channels */
int cut_play_gain; /* dBFS */
int cut_start_point; /* Milliseconds from Start */
int cut_end_point; /* Milliseconds from Start */
int cut_fadeup_point; /* Milliseconds from Start */
int cut_fadedown_point; /* Milliseconds from Start */
int cut_segue_start_point; /* Milliseconds from Start */
int cut_segue_end_point; /* Milliseconds from Start */
int cut_segue_gain; /* dBFS */
int cut_hook_start_point; /* Milliseconds from Start */
int cut_hook_end_point; /* Milliseconds from Start */
int cut_talk_start_point; /* Milliseconds from Start */
int cut_talk_end_point; /* Milliseconds from Start */
};
</programlisting>
<para>
All character arrays use UTF-8 encoding and are null-terminated.
</para>
</refsect2>
<refsect2 id='freeing_memory'><title>Freeing Memory</title>
<para>
When the returned rd_cart structure is no longer required, it should
freed by passing it to the <command>RD_ListCartCuts_Free()</command>
function.
</para>
</refsect2>
</refsect1>
<refsect1 id='returns'><title>RETURN VALUE</title>
<para>
On success, zero is returned. Using the provided parameters an rd_cart
structure is returned and the number of records is returned.
</para>
<para>
If a server error occurs a -1 is returned.
If a client error occurs a specific error number is returned.
</para>
<refsect2 id='errors'><title>Errors</title>
<para>
400 Missing Cart.
</para>
<para>
403 User Authentification Error.
</para>
<para>
404 No Such Cart Exists.
</para>
<para>
nnn Unknown Error Occurred.
</para>
</refsect2>
</refsect1>
</refentry>

View File

@@ -227,104 +227,10 @@
<para>
When successful function will return the number of records sent (numrecs) and a rd_cart structure which
is stored in the provided memory locations. The rd_cart structure has the following fields:
is stored in the provided memory locations. (See the
<command>rd_listcartcuts</command><manvolnum>7</manvolnum> man page
for a listing of the rd_cart structure).
</para>
<programlisting>
struct rd_cart {
unsigned cart_number; /* Cart Number */
unsigned cart_type; /* Cart Type */
char cart_grp_name[41]; /* Group Name */
char cart_title[1021]; /* Cart Title */
char cart_artist[1021]; /* Artist */
char cart_album[1021]; /* Album */
int cart_year; /* Year */
char cart_label[257]; /* Label */
char cart_client[257]; /* Client */
char cart_agency[257]; /* Agency */
char cart_publisher[257]; /* Publisher */
char cart_composer[257]; /* Composer */
char cart_conductor[257]; /* Conductor */
char cart_user_defined[1021]; /* User Defined */
int cart_usage_code; /* Usage Code */
int cart_forced_length; /* Forced Length */
int cart_average_length; /* AverageLength */
int cart_length_deviation; /* Length Deviation */
int cart_average_segue_length; /* Average Segue Length */
int cart_average_hook_length; /* Average Hook Length */
unsigned cart_cut_quantity; /* Cut Quantity */
unsigned cart_last_cut_played; /* Last Cut Played */
unsigned cart_validity; /* Validity */
int cart_enforce_length; /* Enforce Length Flag */
int cart_asyncronous; /* Asyncronous Flag */
char cart_owner[257]; /* Owner */
struct tm cart_metadata_datetime; /* Metatdata Datetime */
char cart_notes[4096]; /* Notes */
};
All character arrays above are the sizes listed and must be null-terminated.
Character encoding is UTF-8.
The cart number is a unsigned integer.
The cart_type is 1=Audio,2=Macro.
The cart_grp_name must be a valid Rivendell DB Group.
The cart_title is 255 characters.
The cart_artist is 255 characters.
The cart_album is 255 characters.
The cart_year is a date (YYYY).
The cart_label is 64 characters.
The cart_client is 64 characters.
The cart_agency is 64 characters.
The cart_publisher is 64 characters.
The cart_composer is 64 characters.
The cart_conductor is 64 characters.
The cart_user_defined is 255 characters.
The cart_usage_code is 0=Feature, 1=Theme Open,
2=Theme Close, 3=Theme Open/Close,
4=Background, 5=Comm/Promo
The cart_forced_length is in milliseconds.
The cart_average_length is in milliseconds.
The cart_length_deviation is in milliseconds.
The cart_average_segue_length is in milliseconds.
The cart_average_hook_length is in milliseconds.
The cart_cut_quantity is number of cuts.
The cart_last_cut_played is self explanatory.
The cart_validity is 0=NeverValid, 1=Conditional, 2=AlwaysValid
3=EvergreenValid, 4=FutureValid
The cart_enforce_length is True(1) or False(0).
The cart_asyncronous is True(1) or False(0).
The cart_owner is 64 characters.
The cart_metadata_datetime is a struct tm.
The cart_user_notes is a character array up to 1024 characters.
</programlisting>
</refsect1>
<refsect2 id='returns'><title>RETURN VALUE</title>
<para>

View File

@@ -0,0 +1,300 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<refentry id="stdin" xmlns="http://docbook.org/ns/docbook" version="5.0">
<!--
Header
-->
<refmeta>
<refentrytitle>RD_ListCartsCuts</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo class='source'>October 2018</refmiscinfo>
<refmiscinfo class='manual'>Rivendell C Library Manual</refmiscinfo>
</refmeta>
<refnamediv>
<refname>rd_listcartscuts</refname>
<refpurpose>Rivendell List Cart/Cuts C Library Function</refpurpose>
</refnamediv>
<info>
<author>
<personname>
<firstname>Todd</firstname>
<surname>Baker</surname>
<email>bakert@rfa.org</email>
</personname>
<contrib>Rivendell C Library Author</contrib>
</author>
</info>
<!--
Body
-->
<refsynopsisdiv id='synopsis'>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;rivwebcapi/rd_listcartscuts.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>RD_ListCartsCuts</function></funcdef>
<paramdef> struct rd_cart * <parameter>cart[]</parameter></paramdef>
<paramdef>const char <parameter>hostname[]</parameter></paramdef>
<paramdef>const char <parameter>username[]</parameter></paramdef>
<paramdef>const char <parameter>passwd[]</parameter></paramdef>
<paramdef>const char <parameter>ticket[]</parameter></paramdef>
<paramdef>const char <parameter>group_name[]</parameter></paramdef>
<paramdef>const char <parameter>filter[]</parameter></paramdef>
<paramdef>const char <parameter>type[]</parameter></paramdef>
<paramdef>const char <parameter>user_agent[]</parameter></paramdef>
<paramdef>unsigned * <parameter>numrecs</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>struct rd_cut *<function>RD_ListCartsCuts_GetCut</function></funcdef>
<paramdef> struct rd_cart <parameter>carts[]</parameter></paramdef>
<paramdef>int <parameter>cart_rec</parameter></paramdef>
<paramdef>int <parameter>cut_rec</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>void <function>RD_ListCartsCuts_Free</function></funcdef>
<paramdef> struct rd_cart <parameter>carts[]</parameter></paramdef>
<paramdef> unsigned <parameter>numrecs</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id='description'><title>Description</title>
<para>
This function lists the fields in one or more pre-existing cart(s).
The user can also filter the records by group name, cart type, and/or a
user provided search string.
Unlike <command>RD_ListCarts</command><manvolnum>7</manvolnum>,
<command>RD_ListCartsCuts</command><manvolnum>7</manvolnum> will
also fetch the full list of cuts associated with each cart.
</para>
<table xml:id="ex.listcartscuts" frame="all">
<title>RD_ListCartsCuts function call fields</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname="FIELD NAME" />
<colspec colname="FIELD TYPE" />
<colspec colname="MEANING" />
<colspec colname="REMARKS" />
<thead>
<row>
<entry>
FIELD NAME
</entry>
<entry>
FIELD TYPE
</entry>
<entry>
MEANING
</entry>
<entry>
REMARKS
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
*cart
</entry>
<entry>
Pointer to rd_cart structure
</entry>
<entry>
Memory location to store cart information
</entry>
<entry>
Mandatory
</entry>
</row>
<row>
<entry>
hostname
</entry>
<entry>
Character Array
</entry>
<entry>
Name Of Rivendell DB Host
</entry>
<entry>
Mandatory
</entry>
</row>
<row>
<entry>
username
</entry>
<entry>
Character Array
</entry>
<entry>
Rivendell User Name
</entry>
<entry>
Mandatory When NO Ticket Provided
</entry>
</row>
<row>
<entry>
passwd
</entry>
<entry>
Character Array
</entry>
<entry>
Rivendell User Password
</entry>
<entry>
Mandatory When NO Ticket Provided
</entry>
</row>
<row>
<entry>
ticket
</entry>
<entry>
Character Array
</entry>
<entry>
Rivendell Authentification Ticket
</entry>
<entry>
Mandatory When NO User/Password Pair Provided.
</entry>
</row>
<row>
<entry>
group_name
</entry>
<entry>
character array
</entry>
<entry>
Group Name
</entry>
<entry>
Optional
</entry>
</row>
<row>
<entry>
filter
</entry>
<entry>
character array
</entry>
<entry>
Filter - searches for specific strings within the following fields: Title, Artist, Client, Agency, Album, Label, Publisher, Composer, Conductor, Song_Id, User_Defined, and Cart Number.
</entry>
<entry>
Optional
</entry>
</row>
<row>
<entry>
type
</entry>
<entry>
character array
</entry>
<entry>
Type of Cart records. If set can be Audio, or Macro.
</entry>
<entry>
Optional
</entry>
</row>
<row>
<entry>
user_agent
</entry>
<entry>
Character Array
</entry>
<entry>
User Agent Value put into HTTP request
</entry>
<entry>
Optional (default is Rivendell-C-API/x.x.x)
</entry>
</row>
<row>
<entry>
*numrecs
</entry>
<entry>
pointer to integer
</entry>
<entry>
memory location for number of records returned
</entry>
<entry>
Mandatory
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
When successful the function will return the number of records sent
(numrecs) and a rd_cart structure which
is stored in the provided memory locations. (See the
<command>rd_listcartcuts</command><manvolnum>7</manvolnum> man page
for a listing of the rd_cart structure).
</para>
<refsect2 id='access_cut_information'><title>Accessing Cut Information</title>
<para>
Information about the cuts associated with each cart can be accessed
from the returned rd_cart structure through use of the
<command>RD_ListCartsCuts_GetCut()</command> function.
The <parameter>cart_rec</parameter> parameter should range between
<userinput>0</userinput> and one less than the value returned in the
<parameter>numrecs</parameter> argument to
<command>RD_ListCartsCuts</command>, while
the <parameter>cut_rec</parameter> parameter should range between
<userinput>0</userinput> and one less than the
value of the <parameter>cart_cut_quantity</parameter> member of the
cart's rd_cart structure.
</para>
<para>
Cut information is returned in the form of a rd_cut structure. (See the
<command>rd_listcartcuts</command><manvolnum>7</manvolnum> man page
for a listing of the rd_cut structure).
</para>
</refsect2>
<refsect2 id='freeing_memory'><title>Freeing Memory</title>
<para>
When the returned rd_cart structure is no longer required, it should
freed by passing it to the <command>RD_ListCartsCuts_Free()</command>
function.
</para>
</refsect2>
</refsect1>
<refsect1 id='returns'><title>RETURN VALUE</title>
<para>
On success, zero is returned. Using the provided parameters an rd_cart
structure is returned and the number of records is returned.
</para>
<para>
If a server error occurs a -1 is returned.
If a client error occurs a specific error number is returned.
</para>
<refsect2 id='errors'><title>Errors</title>
<para>
403 User Authentification Error.
</para>
<para>
404 No Such Group Exists.
</para>
<para>
nnn Unknown Error Occurred.
</para>
</refsect2>
</refsect1>
</refentry>

View File

@@ -210,62 +210,10 @@
<para>
When successful function will return the number of records sent (numrecs) and a rd_cut structure which
is stored in the provided memory locations. The rd_cut structure has the following fields:
is stored in the provided memory locations. (See the
<command>rd_listcartcuts</command><manvolnum>7</manvolnum> man page
for a listing of the rd_cut structure).
</para>
<programlisting>
struct rd_cut {
char cut_name[11];
unsigned cut_cart_number;
unsigned cut_cut_number;
int cut_evergreen;
char cut_description[257];
char cut_outcue[257];
char cut_isrc[49];
char cut_isci[129];
unsigned cut_length;
struct tm cut_origin_datetime;
struct tm cut_start_datetime;
struct tm cut_end_datetime;
int cut_sun;
int cut_mon;
int cut_tue;
int cut_wed;
int cut_thu;
int cut_fri;
int cut_sat;
char cut_start_daypart[9];
char cut_end_daypart[9];
char cut_origin_name[257];
char cut_origin_login_name[1021];
char cut_source_hostname[1021];
unsigned cut_weight;
struct tm cut_last_play_datetime;
unsigned cut_play_counter;
unsigned cut_local_counter;
unsigned cut_validity;
unsigned cut_coding_format;
unsigned cut_sample_rate;
unsigned cut_bit_rate;
unsigned cut_channels;
int cut_play_gain;
int cut_start_point;
int cut_end_point;
int cut_fadeup_point;
int cut_fadedown_point;
int cut_segue_start_point;
int cut_segue_end_point;
int cut_segue_gain;
int cut_hook_start_point;
int cut_hook_end_point;
int cut_talk_start_point;
int cut_talk_end_point;
};
All character arrays above are the sizes listed and must be null-terminated.
Character encoding is UTF-8.
</programlisting>
</refsect1>
<refsect2 id='returns'><title>RETURN VALUE</title>
<para>

View File

@@ -196,62 +196,10 @@
<para>
When successful function will return the number of records sent (numrecs) and a rd_cut structure which
is stored in the provided memory locations. The rd_cut structure has the following fields:
is stored in the provided memory locations. (See the
<command>rd_listcartcuts</command><manvolnum>7</manvolnum> man page
for a listing of the rd_cut structure).
</para>
<programlisting>
struct rd_cut {
char cut_name[11];
unsigned cut_cart_number;
unsigned cut_cut_number;
int cut_evergreen;
char cut_description[257];
char cut_outcue[257];
char cut_isrc[49];
char cut_isci[129];
unsigned cut_length;
struct tm cut_origin_datetime;
struct tm cut_start_datetime;
struct tm cut_end_datetime;
int cut_sun;
int cut_mon;
int cut_tue;
int cut_wed;
int cut_thu;
int cut_fri;
int cut_sat;
char cut_start_daypart[14];
char cut_end_daypart[14];
char cut_origin_name[257];
char cut_origin_login_name[1021];
char cut_source_hostname[1021];
unsigned cut_weight;
struct tm cut_last_play_datetime;
unsigned cut_play_counter;
unsigned cut_local_counter;
unsigned cut_validity;
unsigned cut_coding_format;
unsigned cut_sample_rate;
unsigned cut_bit_rate;
unsigned cut_channels;
int cut_play_gain;
int cut_start_point;
int cut_end_point;
int cut_fadeup_point;
int cut_fadedown_point;
int cut_segue_start_point;
int cut_segue_end_point;
int cut_segue_gain;
int cut_hook_start_point;
int cut_hook_end_point;
int cut_talk_start_point;
int cut_talk_end_point;
};
All character arrays above are the sizes listed and must be null-terminated.
Charater encoding is UTF-8.
</programlisting>
</refsect1>
<refsect2 id='returns'><title>RETURN VALUE</title>
<para>

View File

@@ -24,13 +24,15 @@ EXTRA_DIST = audio_cards.txt\
audio_inputs.txt\
audio_outputs.txt\
audio_perms.txt\
autofills.txt\
aux_metadata.txt\
cart.txt\
cartslots.txt\
cast_downloads.txt\
clipboard.txt\
clock_lines.txt\
clock_perms.txt\
copy_splits.txt\
clocks.txt\
cut_events.txt\
cuts.txt\
deck_events.txt\
@@ -44,13 +46,20 @@ EXTRA_DIST = audio_cards.txt\
encoder_samplerates.txt\
encoders.txt\
event_lines.txt\
event_perms.txt\
events.txt\
extended_panel_names.txt\
extended_panels.txt\
feed_perms.txt\
feeds.txt\
gpio_events.txt\
gpis.txt\
gpos.txt\
groups.txt\
hostvars.txt\
importer_lines.txt\
import_templates.txt\
inputs.txt\
isci_xreference.txt\
jack_clients.txt\
livewire_gpio_slots.txt\
@@ -58,27 +67,37 @@ EXTRA_DIST = audio_cards.txt\
log_modes.txt\
log_lines.txt\
logs.txt\
matrices.txt\
nownext_plugins.txt\
outputs.txt\
panels.txt\
panel_names.txt\
podcasts.txt\
rdairplay_channels.txt\
rd_airplay.txt\
rd_catch.txt\
rdhotkeys.txt\
rd_library.txt\
rd_logedit.txt\
rdpanel_channels.txt\
rdpanel.txt\
recordings.txt\
repl_cart_state.txt\
repl_cut_state.txt\
replicator_map.txt\
replicators.txt\
report_groups.txt\
report_services.txt\
report_stations.txt\
reports.txt\
rule_lines.txt\
service_clocks.txt\
service_perms.txt\
services.txt\
sources.txt\
stack_lines.txt\
stations.txt\
switcher_nodes.txt\
system.txt\
triggers.txt\
ttys.txt\

View File

@@ -6,10 +6,10 @@ physical audio interfaces.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64)
STATION_NAME varchar(64)
CARD_NUMBER int(11) signed
DRIVER int(11) signed
NAME char(64)
NAME varchar(64)
INPUTS int(11) signed
OUTPUTS int(11) signed
CLOCK_SOURCE int(11) signed 0 = Internal, 1 = AES/EBU,

View File

@@ -6,7 +6,7 @@ physical audio inputs.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64)
STATION_NAME varchar(64)
CARD_NUMBER int(11) signed
PORT_NUMBER int(11) signed
TYPE int(11) signed 0 = Analog, 1 = AES/EBU,

View File

@@ -6,7 +6,7 @@ physical audio outputs.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64)
STATION_NAME varchar(64)
CARD_NUMBER int(11) signed
PORT_NUMBER int(11) signed
LEVEL int(11) signed Gain offset, in 1/100 dB

View File

@@ -8,5 +8,5 @@ in the AUDIO_PERMS table:
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
GROUP_NAME char(10) Index
SERVICE_NAME char(10) Index
GROUP_NAME varchar(10) Index
SERVICE_NAME varchar(10) Index

12
docs/tables/autofills.txt Normal file
View File

@@ -0,0 +1,12 @@
AUTOFILLS Table Layout for Rivendell
The AUTOFILLS table holds data concerning which carts should be used
to fill available time when 'Autofill' is enabled in an rdlogmanager(1)
event.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(11) Primary key, auto increment
SERVICE varchar(10) Index
CART_NUMBER int(10) unsigned Index

View File

@@ -0,0 +1,12 @@
AUX_METADATA Table Layout for Rivendell
The AUX_METADATA table holds data concerning auxiliary data fields
associated with podcast feeds.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
FEED_ID int(10) unsigned From FEEDS.ID
VAR_NAME varchar(16)
CAPTION varchar(64)

View File

@@ -2,25 +2,25 @@
The CARTS table holds data concerning all of the available events
in a Rivendell system that are capable of being individually
scheduled. Following is the layout of a record in the CARTS table:
scheduled.
FIELD NAME TYPE REMARKS
--------------------------------------------------------------------------
NUMBER int(10) unsigned Primary key
TYPE int(10) unsigned 1 = Audio, 2 = Command, 3 = Split
GROUP_NAME char(10) Index
TITLE char(255) Index
ARTIST char(255) Index
ALBUM char(255) Name of release album
GROUP_NAME varchar(10) Index
TITLE varchar(191) Index
ARTIST varchar(191) Index
ALBUM varchar(191) Name of release album
YEAR date Year of release
CONDUCTOR char(64)
LABEL char(64) Release Record Label
CLIENT char(64) Index
AGENCY char(64) Index
PUBLISHER char(64) Index
COMPOSER char(64) Index
USER_DEFINED char(255) For use by local user
SONG_ID char(32)
CONDUCTOR varchar(64)
LABEL varchar(64) Release Record Label
CLIENT varchar(64) Index
AGENCY varchar(64) Index
PUBLISHER varchar(64) Index
COMPOSER varchar(64) Index
USER_DEFINED varchar(191) For use by local user
SONG_ID varchar(32)
BPM int(10) unsigned Beats per minute
USAGE_CODE int(11) 0=Feature, 1=Theme Open,
2=Theme Close, 3=Theme Open/Close,
@@ -41,12 +41,13 @@ ENFORCE_LENGTH enum('N','Y') Timeshift?
PRESERVE_PITCH enum('N','Y') Preserve Pitch?
USE_WEIGHTING enum('N','Y')
ASYNCRONOUS enum('N','Y')
OWNER char(64) From LOGS.NAME or STATIONS.NAME
OWNER varchar(64) From LOGS.NAME or STATIONS.NAME
MACROS text RML Macros
SCHED_CODES varchar(255)
NOTES text User notes (freeform)
METADATA_DATETIME datetime Metadata last modified
USE_EVENT_LENGTH enum('N','Y') Use RDLogManager event lengths for
macro cart PAD updates.
PENDING_STATION char(64)
PENDING_STATION varchar(64)
PENDING_DATETIME datetime
PENDING_PID int(11)

View File

@@ -7,7 +7,7 @@ CARTS table:
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned Primary key, Auto Increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
SLOT_NUMBER int(10) unsigned
MODE int(11) signed 0=Cart Deck, 1=Breakaway
DEFAULT_MODE int(11) signed -1=Previous, 0=Cart Deck, 1=Breakaway
@@ -17,7 +17,7 @@ CART_NUMBER int(11) signed
DEFAULT_CART_NUMBER int(11) signed -1=Previous, 0=None, >0=Cart
HOOK_MODE int(11) signed
DEFAULT_HOOK_MODE int(11) signed -1=Previous, 0=Off, 1=On
SERVICE_NAME char(10) From SERVICES.NAME
SERVICE_NAME varchar(10) From SERVICES.NAME
CARD int(11) signed
INPUT_PORT int(11) signed
OUTPUT_PORT int(11) signed

View File

@@ -6,7 +6,7 @@ The CAST_DOWNLOADS table holds data concerning downloads of podcast episodes.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned Primary key, Auto Increment
FEED_KEY_NAME char(8) From FEEDS.KEY_NAME
FEED_KEY_NAME varchar(8) From FEEDS.KEY_NAME
CAST_ID int(10) unsigned From PODCASTS.ID
ACCESS_DATE date
ACCESS_COUNT int(10) unsigned

View File

@@ -6,13 +6,13 @@ layout of a record in the CLIPBOARD table:
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
CUT_NAME char(12) * Primary key, Base name of WAV file
CUT_NAME varchar(12) * Primary key, Base name of WAV file
CART_NUMBER int(10) unsigned Parent Cart Entry, Indexed
DESCRIPTION char(64) Indexed
OUTCUE char(64) Indexed
DESCRIPTION varchar(64) Indexed
OUTCUE varchar(64) Indexed
LENGTH int(10) unsigned Overall length in ms.
ORIGIN_DATETIME datetime Date/Time when recorded
ORIGIN_NAME char(64) Workstation ID where recorded
ORIGIN_NAME varchar(64) Workstation ID where recorded
WEIGHT int(10) unsigned Relative airplay frequency, 1 = normal
LAST_PLAY_DATETIME datetime
PLAY_COUNTER int(10) unsigned

View File

@@ -6,7 +6,7 @@ The CLOCK_PERMS table holds per-line data for clocks in RDLogManager.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
CLOCK_NAME char(64) From CLOCKS.NAME
EVENT_NAME char(64) From EVENTS.NAME
CLOCK_NAME varchar(64) From CLOCKS.NAME
EVENT_NAME varchar(64) From EVENTS.NAME
START_TIME int(11)
LENGTH int(11)

View File

@@ -8,5 +8,5 @@ in the CLOCK_PERMS table:
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
CLOCK_NAME char(64) Index
SERVICE_NAME char(10) Index
CLOCK_NAME varchar(64) Index
SERVICE_NAME varchar(10) Index

12
docs/tables/clocks.txt Normal file
View File

@@ -0,0 +1,12 @@
CLOCKS Table Layout for Rivendell
The CLOCKS table holds data defining each clock in RDLogManager.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
NAME varchar(64) Primary key
SHORT_NAME varchar(8)
ARTISTSEP int(10) unsigned
COLOR varchar(7)
REMARKS text

View File

@@ -1,14 +0,0 @@
COPY_SPLITS Table Layout for Rivendell
The COPY_SPLITS table holds data concerning the National=>Regional
copy mapping for the copy-split subsystem.
FIELD NAME TYPE REMARKS
-------------------------------------------------------------------
ID int unsigned(10) Primary key
SLOT int unsigned(10)
CART_NUMBER int unsigned(10) From CART.NUMBER
ISCI_CODE char(32)
DESCRIPTION char(255)
FILENAME char(64)

View File

@@ -5,6 +5,6 @@ The CUT_EVENTS table holds data concerning per-cut meta events.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(11) Primary key, auto increment
CUT_NAME char(12) From CUTS.CUT_NAME
CUT_NAME varchar(12) From CUTS.CUT_NAME
NUMBER int(11) signed
POINT int(11) signed mS from audio start

View File

@@ -2,19 +2,18 @@
The CUTS table holds data concerning each individual audio cut on the
system, as opposed to CART (where individual entries may reference
more than one cut, as in the case of rotators). Following is the
layout of a record in the CUTS table:
more than one cut, as in the case of rotators).
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
CUT_NAME char(12) * Primary key, Base name of WAV file
CUT_NAME varchar(12) * Primary key, Base name of WAV file
CART_NUMBER int(10) unsigned Parent Cart Entry, Indexed
EVERGREEN enum('N','Y')
DESCRIPTION char(64) Indexed
OUTCUE char(64) Indexed
ISRC char(12) International Standard Recording Code
ISCI char(32) ISCI Code
SHA1_HASH char(40)
DESCRIPTION varchar(64) Indexed
OUTCUE varchar(64) Indexed
ISRC varchar(12) International Standard Recording Code
ISCI varchar(32) ISCI Code
SHA1_HASH varchar(40)
LENGTH int(10) unsigned Overall length in ms.
ORIGIN_DATETIME datetime Date/Time when recorded
START_DATETIME datetime
@@ -28,9 +27,9 @@ WED enum('N','Y')
THU enum('N','Y')
FRI enum('N','Y')
SAT enum('N','Y')
ORIGIN_NAME char(64) Workstation ID where recorded
ORIGIN_LOGIN_NAME char(255) From USERS.LOGIN_NAME
SOURCE_HOSTNAME char(255) Hostname of remote originator of audio
ORIGIN_NAME varchar(64) Workstation ID where recorded
ORIGIN_LOGIN_NAME varchar(191) From USERS.LOGIN_NAME
SOURCE_HOSTNAME varchar(191) Hostname of remote originator of audio
WEIGHT int(10) unsigned Relative airplay frequency, 1 = normal
PLAY_ORDER int(11) Play order when weighting disabled
LAST_PLAY_DATETIME datetime

View File

@@ -6,7 +6,7 @@ events.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(11) Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
CHANNEL int(10) unsigned From DECKS.CHANNEL
NUMBER int(11) signed
CART_NUMBER int(10) unsigned

View File

@@ -6,7 +6,7 @@ recording interface on the system.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
CHANNEL int(10) unsigned 0 = Audition Channel
CARD_NUMBER int(11) signed -1 = None Assigned
STREAM_NUMBER int(11) signed -1 = None Assigned
@@ -18,7 +18,7 @@ DEFAULT_FORMAT int(10) signed
DEFAULT_CHANNELS int(10) signed
DEFAULT_BITRATE int(10) signed
DEFAULT_THRESHOLD int(10) signed
SWITCH_STATION char(64) From OUTPUTS.STATION_NAME
SWITCH_STATION varchar(64) From OUTPUTS.STATION_NAME
SWITCH_MATRIX int(11) From OUTPUTS.MATRIX
SWITCH_OUTPUT int(11) From OUTPUTS.NUMBER
SWITCH_DELAY int(10) unsigned

View File

@@ -7,5 +7,5 @@ FIELD NAME TYPE REMARKS
ID int(11) Primary Key, Not Null, Unique
Auto-Increment
DROPBOX_ID int(11) From DROPBOXES.ID
FILE_PATH char(255)
FILE_PATH varchar(191)
FILE_DATETIME datetime

View File

@@ -8,4 +8,4 @@ FIELD NAME TYPE REMARKS
ID int(11) Primary Key, Not Null, Unique
Auto-Increment
DROPBOX_ID int(11) From DROPBOXES.ID
SCHED_CODE char(11)
SCHED_CODE varchar(11)

View File

@@ -6,9 +6,9 @@ FIELD NAME TYPE REMARKS
-------------------------------------------------------------------------
ID int(11) Primary Key, Not Null, Unique
Auto-Increment
STATION_NAME char(64) From STATIONS.NAME
GROUP_NAME char(10) From GROUPS.NAME
PATH char(255)
STATION_NAME varchar(64) From STATIONS.NAME
GROUP_NAME varchar(10) From GROUPS.NAME
PATH varchar(191)
NORMALIZATION_LEVEL int(11)
AUTOTRIM_LEVEL int(11)
SINGLE_CART enum('N','Y')
@@ -20,12 +20,12 @@ USE_CARTCHUNK_ID enum('N','Y')
TITLE_FROM_CARTCHUNK_ID enum('N','Y') Set Rivendell cart title from cartchunk cutid.
DELETE_CUTS enum('N','Y')
DELETE_SOURCE enum('N','Y')
METADATA_PATTERN char(64)
METADATA_PATTERN varchar(64)
STARTDATE_OFFSET int(11)
ENDDATE_OFFSET int(11)
FIX_BROKEN_FORMATS enum('N','Y')
LOG_PATH char(255)
LOG_PATH varchar(191)
IMPORT_CREATE_DATES enum('N','Y')
CREATE_STARTDATE_OFFSET int(11)
CREATE_ENDDATE_OFFSET int(11)
SET_USER_DEFINED char(255)
SET_USER_DEFINED varchar(191)

View File

@@ -5,27 +5,27 @@ The ELR_LINES table hold information for electronic log reconciliation.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
ID int(10) unsigned Primary key, auto-increment
SERVICE_NAME char(10) From SERVICES.NAME
SERVICE_NAME varchar(10) From SERVICES.NAME
LENGTH int(11) signed
LOG_NAME char(64) From LOGS.NAME
LOG_NAME varchar(64) From LOGS.NAME
LOG_ID int(11) signed From *_LOG.ID
CART_NUMBER int(10) unsigned From CART.NUMBER
CUT_NUMBER int(11)
TITLE char(255) From CART.TITLE
ARTIST char(255) From CART.ARTIST
PUBLISHER char(64) From CART.PUBLISHER
COMPOSER char(64) From CART.COMPOSER
ALBUM char(255) From CART.ALBUM
LABEL char(64) From CART.LABEL
CONDUCTOR char(64) From CART.CONDUCTOR
USER_DEFINED char(255) From CART.USER_DEFINED
SONG_ID char(32) From CART.SONG_ID
TITLE varchar(191) From CART.TITLE
ARTIST varchar(191) From CART.ARTIST
PUBLISHER varchar(64) From CART.PUBLISHER
COMPOSER varchar(64) From CART.COMPOSER
ALBUM varchar(191) From CART.ALBUM
LABEL varchar(64) From CART.LABEL
CONDUCTOR varchar(64) From CART.CONDUCTOR
USER_DEFINED varchar(191) From CART.USER_DEFINED
SONG_ID varchar(32) From CART.SONG_ID
USAGE_CODE int From CART.USAGE_CODE
DESCRIPTION char(64) From CUTS.DESCRIPTION
OUTCUE char(64) From CUTS.OUTCUE
ISRC char(12) From CUTS.ISRC
ISCI char(32) From CUTS.ISCI
STATION_NAME char(64) From STATIONS.NAME
DESCRIPTION varchar(64) From CUTS.DESCRIPTION
OUTCUE varchar(64) From CUTS.OUTCUE
ISRC varchar(12) From CUTS.ISRC
ISCI varchar(32) From CUTS.ISCI
STATION_NAME varchar(64) From STATIONS.NAME
EVENT_DATETIME datetime
SCHEDULED_TIME time From *_LOG.START_TIME
EVENT_TYPE int(11) 1=Start, 2=Stop
@@ -36,7 +36,7 @@ START_SOURCE int(11) 0=Unknown
ONAIR_FLAG enum('N','Y')
EXT_START_TIME time Scheduler Start Time
EXT_LENGTH int(11) Scheduler Length
EXT_CART_NAME char(32) Scheduler Cart Name
EXT_DATA char(32) Scheduler Data
EXT_EVENT_ID char(8) Scheduler Event ID
EXT_ANNC_TYPE char(8) External Scheduler Announcement Type
EXT_CART_NAME varchar(32) Scheduler Cart Name
EXT_DATA varchar(32) Scheduler Data
EXT_EVENT_ID varchar(8) Scheduler Event ID
EXT_ANNC_TYPE varchar(8) External Scheduler Announcement Type

View File

@@ -1,13 +1,12 @@
ENCODERS Table Layout for Rivendell
The EVENTS table holds data concerning each custom encoder format
on the system. Following is the layout of a record in the ENCODERS
table:
on the system.
FIELD NAME TYPE REMARKS
-------------------------------------------------------------------
ID int(11)
NAME char(32)
STATION_NAME char(64) From STATIONS.NAME
COMMAND_LINE char(255)
DEFAULT_EXTENSION char(16)
NAME varchar(32)
STATION_NAME varchar(64) From STATIONS.NAME
COMMAND_LINE varchar(255)
DEFAULT_EXTENSION varchar(16)

View File

@@ -6,11 +6,11 @@ post-import events.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
ID int(11) signed Primary key, auto-increment
EVENT_NAME char(64) From EVENT.NAME
EVENT_NAME varchar(64) From EVENT.NAME
TYPE int(11) signed 0=PreImport, 1=PostImport
COUNT int(11) signed Order of records
EVENT_TYPE int(11) signed 0=Cart, 1=Marker, 2=OpenBracket,
3=CloseBracket, 4=Link
CART_NUMBER int(10) unsigned From CART.NUMBER
TRANS_TYPE int(11) signed 0 = Play, 1 = Stop, 2 = Segue
MARKER_COMMENT char(255)
MARKER_COMMENT varchar(191)

View File

@@ -0,0 +1,11 @@
EVENT_PERMS Table Layout for Rivendell
The EVENT_PERMS table holds data concerning which rdlogmanager(1)
events are associated with which services.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
EVENT_NAME varchar(64) From EVENTS.NAME
SERIVCE_NAME varchar(10) From SERVICES.NAME

31
docs/tables/events.txt Normal file
View File

@@ -0,0 +1,31 @@
EVENTS Table Layout for Rivendell
The EVENTS table holds data defining each event in rdlogmanager(1).
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
NAME varchar(64) Primary key
PROPERTIES varchar(64)
DISPLAY_TEXT varchar(64)
NOTE_TEXT varchar(191)
PREPOSITION int(11)
TIME_TYPE int(11)
GRACE_TIME int(11)
POST_POINT enum('N','Y')
USE_AUTOFILL enum('N','Y')
AUTOFILL_SLOP int(11)
USE_TIMESCALE enum('N','Y')
IMPORT_SOURCE int(11)
START_SLOP int(11)
END_SLOP int(11)
FIRST_TRANS_TYPE int(11)
DEFAULT_TRANS_TYPE int(11)
COLOR varchar(7)
SCHED_GROUP varchar(10)
TITLE_SEP int(10) unsigned
HAVE_CODE varchar(10)
HAVE_CODE2 varchar(10)
HOR_SEP int(10) unsigned
HOR_DIST int(10) unsigned
NESTED_EVENT varchar(64)
REMARKS text

View File

@@ -1,13 +1,12 @@
EXTENDED_PANEL_NAMES Table Layout for Rivendell
The EXTENDED_PANEL_NAMES table holds configuration data for the names of the
extended SoundPanels in Rivendell. Following is the layout of a record in the
EXTENDED_PANEL_NAMES table:
extended SoundPanels in Rivendell.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
TYPE int(11) 0=Station Panel, 1=User Panel
OWNER char(64)
OWNER varchar(64)
PANEL_NO int(11)
NAME char(64)
NAME varchar(64)

View File

@@ -0,0 +1,16 @@
EXTENDED_PANELS Table Layout for Rivendell
The EXTENDED_PANELS table holds configuration data for the
extended SoundPanels in Rivendell.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
TYPE int(11) 0=Station Panel, 1=User Panel
OWNER varchar(64)
PANEL_NO int(11)
ROW_NO int(11)
COLUMN_NO int(11)
LABEL varchar(64)
CART int(11)
DEFAULT_COLOR varchar(7)

View File

@@ -1,12 +1,11 @@
FEED_PERMS Table Layout for Rivendell
The FEED_PERMS table holds data concerning which RSS feeds are
are allowed to be accessed by which users. Following is the layout
of a record in the FEED_PERMS table:
are allowed to be accessed by which users.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
USER_NAME char(255) From USERS.LOGIN_NAME
KEY_NAME char(8) From FEEDS.KEYNAME
USER_NAME varchar(191) From USERS.LOGIN_NAME
KEY_NAME varchar(8) From FEEDS.KEYNAME

38
docs/tables/feeds.txt Normal file
View File

@@ -0,0 +1,38 @@
FEEDS Table Layout for Rivendell
The FEEDS table holds data concerning which defines RSS feeds.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
KEY_NAME varchar(8) Unique
CHANNEL_TITLE varchar(191)
CHANNEL_DESCRIPTION text
CHANNEL_CATEGORY varchar(64)
CHANNEL_LINK varchar(191)
CHANNEL_COPYRIGHT varchar(64)
CHANNEL_WEBMASTER varchar(64)
CHANNEL_LANGUAGE varchar(5)
BASE_URL varchar(191)
BASE_PREAMBLE varchar(191)
PURGE_URL varchar(191)
PURGE_USERNAME varchar(64)
PURGE_PASSWORD varchar(64)
HEADER_XML text
CHANNEL_XML text
ITEM_XML text
CAST_ORDER enum('N','Y')
MAX_SHELF_LIFE int(11)
LAST_BUILD_DATETIME datetime
ORIGIN_DATETIME datetime
ENABLE_AUTOPOST enum('N','Y')
KEEP_METADATA enum('N','Y')
UPLOAD_FORMAT int(11)
UPLOAD_CHANNELS int(11)
UPLOAD_SAMPRATE int(11)
UPLOAD_BITRATE int(11)
UPLOAD_QUALITY int(11)
UPLOAD_EXTENSION varchar(16)
NORMALIZE_LEVEL int(11)
REDIRECT_PATH varchar(191)
MEDIA_LINK_MODE int(11)

View File

@@ -6,7 +6,7 @@ by the system.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
MATRIX int(10) unsigned From MATRICES.MATRIX
NUMBER int(11)
TYPE int(11) 0 = GPI, 1 = GPO

View File

@@ -1,13 +1,12 @@
GPIS Table Layout for Rivendell
The GPIS table holds data concerning the gpi lines of each
configured switcher device on the system. Following is the layout
of a record in the GPIS table:
configured switcher device on the system.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
MATRIX int(10) unsigned
NUMBER int(11)
MACRO_CART int(10) unsigned

View File

@@ -1,13 +1,12 @@
GPOS Table Layout for Rivendell
The GPOS table holds data concerning the gpo lines of each
configured switcher device on the system. Following is the layout
of a record in the GPOS table:
configured switcher device on the system.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
MATRIX int(10) unsigned
NUMBER int(11)
MACRO_CART int(10) unsigned

View File

@@ -1,22 +1,21 @@
GROUPS Layout for Rivendell
The GROUPS table holds data concerning each Cart Group configured
on the system. Following is the layout of a record in the GROUPS
table:
on the system.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
NAME char(10) Primary Key
DESCRIPTION char(255)
NAME varchar(10) Primary Key
DESCRIPTION varchar(255)
DEFAULT_CART_TYPE unsigned int(10) 1=Audio, 2=Macro
DEFAULT_LOW_CART unsigned int(10)
DEFAULT_HIGH_CART unsigned int(10)
DEFAULT_CUT_LIFE int(11) Default END_DATETIME interval (days)
CUT_SHELFLIFE int(11) -1=no autopurge
DELETE_EMPTY_CARTS enum('N','Y') After purging cuts
DEFAULT_TITLE char(255)
DEFAULT_TITLE varchar(255)
ENFORCE_CART_RANGE enum('N','Y')
REPORT_TFC enum('N','Y')
REPORT_MUS enum('N','Y')
ENABLE_NOW_NEXT enum('N','Y')
COLOR char(7)
COLOR varchar(7)

12
docs/tables/hostvars.txt Normal file
View File

@@ -0,0 +1,12 @@
HOSTVARS Table Layout for Rivendell
The HOSTVARS table holds host variable definitions.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(11) Primary key, auto increment
STATION_NAME varchar(64) From STATIONS.NAME
NAME varchar(32)
VARVALUE varchar(191)
REMARK varchar(191)

View File

@@ -0,0 +1,32 @@
IMPORT_TEMPLATES Layout for Rivendell
The IMPORT_TEMPLATES table holds pre-defined log importation parameters
for various third-party systems.
FIELD NAME TYPE REMARKS
----------------------------------------------------------------
NAME varchar(64) Primary key
CART_OFFSET int(11)
CART_LENGTH int(11)
TITLE_OFFSET int(11)
TITLE_LENGTH int(11)
HOURS_OFFSET int(11)
HOURS_LENGTH int(11)
MINUTES_OFFSET int(11)
MINUTES_LENGTH int(11)
SECONDS_OFFSET int(11)
SECONDS_LENGTH int(11)
LEN_HOURS_OFFSET int(11)
LEN_HOURS_LENGTH int(11)
LEN_MINUTES_OFFSET int(11)
LEN_MINUTES_LENGTH int(11)
LEN_SECONDS_OFFSET int(11)
LEN_SECONDS_LENGTH int(11)
LENGTH_OFFSET int(11)
LENGTH_LENGTH int(11)
DATA_OFFSET int(11)
DATA_LENGTH int(11)
EVENT_ID_OFFSET int(11)
EVENT_ID_LENGTH int(11)
ANNC_TYPE_OFFSET int(11)
ANNC_TYPE_LENGTH int(11)

View File

@@ -6,22 +6,22 @@ importation.
FIELD NAME TYPE REMARKS
----------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
PROCESS_ID int unsigned
LINE_ID int(10) unsigned
START_HOUR int (11) signed
START_SECS int(11) signed
CART_NUMBER int (10) unsigned
TITLE char(255)
TITLE varchar(191)
LENGTH int (11) signed
INSERT_BREAK enum('N','Y')
INSERT_TRACK enum('N','Y')
INSERT_FIRST int (10) unsigned
TRACK_STRING char(255)
EXT_DATA char(32)
EXT_EVENT_ID char(32)
EXT_ANNC_TYPE char(8)
EXT_CART_NAME char(32)
TRACK_STRING varchar(191)
EXT_DATA varchar(32)
EXT_EVENT_ID varchar(32)
EXT_ANNC_TYPE varchar(8)
EXT_CART_NAME varchar(32)
LINK_START_TIME time
LINK_LENGTH int (11) signed
EVENT_USED enum('N','Y')

19
docs/tables/inputs.txt Normal file
View File

@@ -0,0 +1,19 @@
INPUTS Table Layout for Rivendell
The INPUTS table holds information regarding switcher inputs.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(11) Primary key, auto increment
STATION_NAME varchar(64) From STATIONS.NAME
MATRIX int(11)
NUMBER int(11)
NAME varchar(64)
FEED_NAME varchar(8)
CHANNEL_MODE int(11)
ENGINE_NUM int(11)
DEVICE_NUM int(11)
NODE_HOSTNAME varchar(176)
NODE_TCP_PORT int(11)
NODE_SLOT int(11)

View File

@@ -9,11 +9,11 @@ FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
CART_NUMBER int(10) unsigned
ISCI char(32)
FILENAME char(64)
ISCI varchar(32)
FILENAME varchar(64)
LATEST_DATE date
TYPE char(1)
ADVERTISER_NAME char(30)
PRODUCT_NAME char(35)
CREATIVE_TITLE char(30)
REGION_NAME char(80)
TYPE varchar(1)
ADVERTISER_NAME varchar(30)
PRODUCT_NAME varchar(35)
CREATIVE_TITLE varchar(30)
REGION_NAME varchar(80)

View File

@@ -6,6 +6,6 @@ when starting the rivendell daemons.
FIELD NAME TYPE REMARKS
-------------------------------------------------------------------------
ID int unsigned(10) Primary Key
STATION_NAME char(64) From STATIONS.NAME
DESCRIPTION char(64)
COMMAND_LINE char(255)
STATION_NAME varchar(64) From STATIONS.NAME
DESCRIPTION varchar(64)
COMMAND_LINE varchar(255)

View File

@@ -7,8 +7,8 @@ Each slot consist of five Rivendell GPIO lines.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
ID int(11) signed Primary key, auto-increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
MATRIX int(11) From MATRICES.MATRIX
SLOT int(11)
IP_ADDRESS char(15)
IP_ADDRESS varchar(15)
SOURCE_NUMBER int(11)

View File

@@ -5,7 +5,7 @@ The LOG_LINES table holds the per-line data for all Rivendell logs.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
ID int(11) signed Primary key, auto-increment
LOG_NAME char(64) From LOGS.NAME
LOG_NAME varchar(64) From LOGS.NAME
COUNT int(11) signed Order of records
TYPE int(11) signed 0=Cart, 1=Marker, 2=OpenBracket,
3=CloseBracket, 4=Link
@@ -26,12 +26,12 @@ FADEDOWN_GAIN int(11) signed
SEGUE_START_POINT int(11) signed Overloads CUTS.SEGUE_START_POINT
SEGUE_END_POINT int(11) signed Overloads CUTS.SEGUE_END_POINT
SEGUE_GAIN int(11) signed
COMMENT char(255)
LABEL char(64)
ORIGIN_USER char(255) From USERS.LOGIN_NAME
COMMENT varchar(255)
LABEL varchar(64)
ORIGIN_USER varchar(255) From USERS.LOGIN_NAME
ORIGIN_DATETIME datetime
EVENT_LENGTH int(11) Length of parent RDLogManager event
LINK_EVENT_NAME char(64)
LINK_EVENT_NAME varchar(64)
LINK_START_TIME int(11) Milliseconds after 00:00:00
LINK_LENGTH int(11)
LINK_START_SLOP int(11)
@@ -40,7 +40,7 @@ LINK_ID int(11)
LINK_EMBEDDED enum('N','Y')
EXT_START_TIME time External Scheduler Start Time
EXT_LENGTH int(11) External Scheduler Event Length
EXT_CART_NAME char(32) External Scheduler Cart Name
EXT_DATA char(32) External Scheduler Data
EXT_EVENT_ID char(8) External Scheduler Event ID
EXT_ANNC_TYPE char(8) External Scheduler Announcement Type
EXT_CART_NAME varchar(32) External Scheduler Cart Name
EXT_DATA varchar(32) External Scheduler Data
EXT_EVENT_ID varchar(8) External Scheduler Event ID
EXT_ANNC_TYPE varchar(8) External Scheduler Announcement Type

View File

@@ -6,21 +6,21 @@ channels assignments and related information.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
MACHINE int(11) 1 = RDAirPlay Main Log
2 = RDAirPlay Aux Log 1
3 = RDAirPlay Aux Log 2
101..124 = RDVAirPlay Log Machines
START_MODE int(11)
AUTO_RESTART enum('N','Y')
LOG_NAME char(64)
CURRENT_LOG char(64)
LOG_NAME varchar(64)
CURRENT_LOG varchar(64)
RUNNING enum('N','Y')
LOG_ID int(11)
LOG_LINE int(11)
NOW_CART int(10) unsigned
NEXT_CART int(10) unsigned
UDP_ADDR char(255)
UDP_ADDR varchar(255)
UDP_PORT int(10) unsigned
UDP_STRING char(255)
LOG_RML char(255)
UDP_STRING varchar(255)
LOG_RML varchar(255)

View File

@@ -6,7 +6,7 @@ RDAirPlay.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
MACHINE int(10) unsigned 0=Main Log, 1=AuxLog 1, 2=AuxLog
START_MODE int(11) 0=Previous, 1=LiveAssist, 2=Automatic,
3=Manual

View File

@@ -6,12 +6,12 @@ table:
FIELD NAME TYPE REMARKS
-------------------------------------------------------------------
NAME char(64)
NAME varchar(64)
LOG_EXISTS enum('N','Y')
TYPE int(11) 0=Log, 1=Event, 2=Clock, 3=Grid
SERVICE char(10) From SERVICES.NAME
DESCRIPTION char(64)
ORIGIN_USER char(255) From USERS.LOGIN_NAME
SERVICE varchar(10) From SERVICES.NAME
DESCRIPTION varchar(64)
ORIGIN_USER varchar(191) From USERS.LOGIN_NAME
ORIGIN_DATETIME datetime
LINK_DATETIME datetime
MODIFIED_DATETIME datetime
@@ -27,8 +27,8 @@ MUSIC_LINKED enum('N','Y')
TRAFFIC_LINKS int
TRAFFIC_LINKED enum('N','Y')
NEXT_ID int(11)
LOCK_USER_NAME char(255) From USER.LOGIN_NAME
LOCK_STATION_NAME char(64) From STATIONS.NAME
LOCK_IPV4_ADDRESS char(16)
LOCK_USER_NAME varchar(191) From USER.LOGIN_NAME
LOCK_STATION_NAME varchar(64) From STATIONS.NAME
LOCK_IPV4_ADDRESS varchar(16)
LOCK_DATETIME datetime
LOCK_GUID char(82)
LOCK_GUID varchar(82)

36
docs/tables/matrices.txt Normal file
View File

@@ -0,0 +1,36 @@
MATRICES Table Layout for Rivendell
The MATRICES table holds data that defines a switcher device.
FIELD NAME TYPE REMARKS
-------------------------------------------------------------------
ID int(11) Primary key, auto_increment
STATION_NAME varchar(64) From STATIONS.NAME
NAME varchar(64)
MATRIX int(11)
TYPE int(11)
LAYER int(11)
PORT_TYPE int(11)
PORT_TYPE_2 int(11)
CARD int(11)
PORT int(11)
PORT_2 int(11)
IP_ADDRESS varchar(16)
IP_ADDRESS_2 varchar(16)
IP_PORT int(11)
IP_PORT_2 int(11)
USERNAME varchar(32)
USERNAME_2 varchar(32)
PASSWORD varchar(32)
PASSWORD_2 varchar(32)
START_CART int(10) unsigned
STOP_CART int(10) unsigned
START_CART_2 int(10) unsigned
STOP_CART_2 int(10) unsigned
GPIO_DEVICE varchar(191)
INPUTS int(11)
OUTPUTS int(11)
GPIS int(11)
GPOS int(11)
FADERS int(11)
DISPLAYS int(11)

View File

@@ -1,13 +1,12 @@
NOWNEXT_PLUGINS Table Layout for Rivendell
The NOWNEXT_PLUGINS table holds data concerning each Now & Next
plugins configured on the system. Following is the layout
of a record in the NOWNEXT_PLUGINS table:
plugins configured on the system.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
LOG_MACHINE int(10) unsigned 0=Main, 1=Aux1, 2=Aux2
PLUGIN_PATH char(255)
PLUGIN_ARG char(255)
PLUGIN_PATH varchar(191)
PLUGIN_ARG varchar(191)

17
docs/tables/outputs.txt Normal file
View File

@@ -0,0 +1,17 @@
OUTPUTS Table Layout for Rivendell
The OUTPUTS table holds information regarding switchs outputs.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(11) Primary key, auto increment
STATION_NAME varchar(64) From STATIONS.NAME
MATRIX int(11)
NUMBER int(11)
NAME varchar(64)
ENGINE_NUM int(11)
DEVICE_NUM int(11)
NODE_HOSTNAME varchar(176)
NODE_TCP_PORT int(11)
NODE_SLOT int(11)

View File

@@ -1,13 +1,12 @@
PANEL_NAMES Table Layout for Rivendell
The PANEL_NAMES table holds configuration data for the names of the
SoundPanels in Rivendell. Following is the layout of a record in the
PANEL_NAMES table:
SoundPanels in Rivendell.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
TYPE int(11) 0=Station Panel, 1=User Panel
OWNER char(64)
OWNER varchar(64)
PANEL_NO int(11)
NAME char(64)
NAME varchar(64)

View File

@@ -1,17 +1,17 @@
PANELS Table Layout for Rivendell
The PANELS table holds configuration data for all the SoundPanels in
Rivendell. Following is the layout of a record in the PANELS table:
Rivendell.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
TYPE int(11) 0=Station Panel, 1=User Panel
OWNER char(64)
OWNER varchar(64)
PANEL_NO int(11)
ROW_NO int(11)
COLUMN_NO int(11)
LABEL char(64)
LABEL varchar(64)
CART int(11)
DEFAULT_COLOR char(7) Background color, in hex format
DEFAULT_COLOR varchar(7) Background color, in hex format
"#RRGGBB".

23
docs/tables/podcasts.txt Normal file
View File

@@ -0,0 +1,23 @@
PODCASTS Table Layout for Rivendell
The PODCASTS table holds information about individual RSS posts.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
FEED_ID int(10) unsigned From FEEDS.ID
STATUS int(10) unsigned
ITEM_TITLE varchar(191)
ITEM_DESCRIPTION text
ITEM_CATEGORY varchar(64)
ITEM_LINK varchar(191)
ITEM_COMMENTS varchar(191)
ITEM_AUTHOR varchar(191)
ITEM_SOURCE_TEXT varchar(64)
ITEM_SOURCE_URL varchar(191)
AUDIO_FILENAME varchar(191)
AUDIO_LENGTH int(10) unsigned
AUDIO_TIME int(10) unsigned
SHELF_LIFE int(11)
ORIGIN_DATETIME datetime
EFFECTIVE_DATETIME datetime

View File

@@ -1,7 +1,6 @@
RDAIRPLAY Table Layout for Rivendell
The RDAIRPLAY table holds configuration data for the RDAirPlay widget.
Following is the layout of a record in the RDAIRPLAY table:
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
@@ -21,17 +20,17 @@ DEFAULT_TRANS_TYPE int(11)
BAR_ACTION int(10) unsigned 0=None, 1=Start Next
FLASH_PANEL enum('N','Y')
PANEL_PAUSE_ENABLED enum('N','Y')
BUTTON_LABEL_TEMPLATE char(32)
BUTTON_LABEL_TEMPLATE varchar(32)
PAUSE_ENABLED enum('N','Y')
DEFAULT_SERVICE char(10) From SERVICES.NAME
DEFAULT_SERVICE varchar(10) From SERVICES.NAME
HOUR_SELECTOR_ENABLED enum('N','Y')
EXIT_CODE int(11) 0=clean, 1=dirty
VIRTUAL_EXIT_CODE int(11) 0=clean, 1=dirty
EXIT_PASSWORD char(41)
SKIN_PATH char(255)
EXIT_PASSWORD varchar(41)
SKIN_PATH varchar(191)
SHOW_COUNTERS enum('N','Y')
AUDITION_PREROLL int(11)
TITLE_TEMPLATE char(64)
ARTIST_TEMPLATE char(64)
OUTCUE_TEMPLATE char(64)
DESCRIPTION_TEMPLATE char(64)
TITLE_TEMPLATE varchar(64)
ARTIST_TEMPLATE varchar(64)
OUTCUE_TEMPLATE varchar(64)
DESCRIPTION_TEMPLATE varchar(64)

View File

@@ -6,5 +6,5 @@ RDCatch module. Following is the layout of a record in the RDAIRPLAY table:
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION char(64) Workstation, Indexed
ERROR_RML char(255)
STATION varchar(64) Workstation, Indexed
ERROR_RML varchar(191)

View File

@@ -5,7 +5,7 @@ The RDLIBRARY table holds configuration data for the RDLibrary widget.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION char(40) Workstation, Indexed
STATION varchar(64) From STATIONS.NAME
INSTANCE int(10) unsigned
INPUT_CARD int(11) None=-1
INPUT_TYPE enum('A','D')
@@ -21,10 +21,10 @@ DEFAULT_RECORD_MODE int(10) unsigned 0 = Manual, 1 = VOX
DEFAULT_TRIM_STATE enum('Y','N')
MAXLENGTH int(11) Max record length, in sec
TAIL_PREROLL int(10) unsigned
RIPPER_DEVICE char(64)
RIPPER_DEVICE varchar(64)
PARANOIA_LEVEL int(11)
RIPPER_LEVEL int(11)
CDDB_SERVER char(64)
CDDB_SERVER varchar(64)
READ_ISRC enum('N','Y')
ENABLE_EDITOR enum('N','Y')
SRC_CONVERTER int(11)

View File

@@ -1,12 +1,11 @@
RDLOGEDIT Table Layout for Rivendell
The RDLOGEDIT table holds configuration data for the RDLogEdit widget.
Following is the layout of a record in the RDLOGEDIT table:
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION char(64) Workstation, Indexed
STATION varchar(64) From STATIONS.NAME
INPUT_CARD int(11) None=-1
OUTPUT_CARD int(11) None=-1
OUTPUT_PORT int(11)

View File

@@ -6,7 +6,7 @@ channels assignments and related information.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
INSTANCE int(10) unsigned 0 = Main Log Output 1
1 = Main Log Output 2
2 = Sound Panel Output 1
@@ -19,8 +19,8 @@ INSTANCE int(10) unsigned 0 = Main Log Output 1
9 = Sound Panel Output 5
CARD int(11)
PORT int(11)
START_RML char(255)
STOP_RML char(255)
START_RML varchar(191)
STOP_RML varchar(191)
GPIO_TYPE int unsigned 0 = Edge, 1 = Level
START_GPI_MATRIX int(11)
START_GPI_LINE int(11)

12
docs/tables/rdhotkeys.txt Normal file
View File

@@ -0,0 +1,12 @@
RDHOTKEYS Table Layout for Rivendell
The RDHOTKEYS table holds key mappings.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION_NAME varchar(64) From STATIONS.NAME
MODULE_NAME varchar(64)
KEY_ID int(11)
KEY_VALUE varchar(64)
KEY_LABEL varchar(64)

16
docs/tables/rdpanel.txt Normal file
View File

@@ -0,0 +1,16 @@
RDPANEL Table Layout for Rivendell
The RDPANEL table holds configuration data for the RDCatch module.
FIELD NAME TYPE REMARKS
--------------------------------------------------------------------------------
ID int(11) * Primary key, Auto Increment
STATION varchar(64) From STATIONS.NAME
STATION_PANELS int(11)
USER_PANELS int(11)
CLEAR_FILTER enum('N','Y')
FLASH_PANEL enum('N','Y')
PANEL_PAUSE_ENABLED enum('N','Y')
BUTTON_LABEL_TEMPLATE varchar(32)
DEFAULT_SERVICE varchar(10)
SKIN_PATH varchar(191)

View File

@@ -6,7 +6,7 @@ channels assignments and related information.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
INSTANCE int(10) unsigned 0 = Main Log Output 1 (Not Used)
1 = Main Log Output 2 (Not Used)
2 = Sound Panel Output 1
@@ -19,8 +19,8 @@ INSTANCE int(10) unsigned 0 = Main Log Output 1 (Not Used)
9 = Sound Panel Output 5
CARD int(11)
PORT int(11)
START_RML char(255)
STOP_RML char(255)
START_RML varchar(255)
STOP_RML varchar(255)
GPIO_TYPE int unsigned 0 = Edge, 1 = Level
START_GPI_MATRIX int(11)
START_GPI_LINE int(11)

View File

@@ -11,9 +11,9 @@ IS_ACTIVE enum('N','Y')
TYPE int(11) 0=Recording,1=Macro Event,
2=Switch Event,3=Playout,
4=Download,5=Upload
STATION_NAME char(64) From STATIONS.NAME
STATION_NAME varchar(64) From STATIONS.NAME
CHANNEL int(10) unsigned
CUT_NAME char(12) From CUTS.CUT_NAME
CUT_NAME varchar(12) From CUTS.CUT_NAME
SUN enum('N','Y')
MON enum('N','Y')
TUE enum('N','Y')
@@ -21,7 +21,7 @@ WED enum('N','Y')
THU enum('N','Y')
FRI enum('N','Y')
SAT enum('N','Y')
DESCRIPTION char(64) Remarks
DESCRIPTION varchar(64) Remarks
START_TYPE int(10) 0=Hard Timed,1=GPI
START_TIME time
@@ -57,8 +57,8 @@ EXIT_CODE int(11) 0 = Ok, 1 = Short Length,
2 = Low Level, 3 = High Level
EXIT_TEXT text
ONE_SHOT enum ('N','Y')
URL char(255)
URL_USERNAME char(64)
URL_PASSWORD char(64)
URL varchar(255)
URL_USERNAME varchar(64)
URL_PASSWORD varchar(64)
ENABLE_METADATA enum('N','Y')
FEED_ID int From FEEDS.ID

View File

@@ -7,8 +7,8 @@ FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned auto_increment, not null
primary key
REPLICATOR_NAME char(32) from REPLICATORS.NAME
REPLICATOR_NAME varchar(32) from REPLICATORS.NAME
CART_NUMBER int(10) unsigned from CART.NUMBER
POSTED_FILENAME char(255)
POSTED_FILENAME varchar(191)
ITEM_DATETIME datetime
REPOST enum('N','Y')

View File

@@ -7,6 +7,6 @@ FIELD NAME TYPE REMARKS
------------------------------------------------------------------
ID int(10) unsigned auto_increment, not null
primary key
REPLICATOR_NAME char(32) from REPLICATORS.NAME
CUT_NAME char(12) from CUTS.CUT_NAME
REPLICATOR_NAME varchar(32) from REPLICATORS.NAME
CUT_NAME varchar(12) from CUTS.CUT_NAME
ITEM_DATETIME datetime

View File

@@ -5,17 +5,17 @@ configuration on the system.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------
NAME char(32) not null, primary key
DESCRIPTION char(64)
NAME varchar(32) not null, primary key
DESCRIPTION varchar(64)
TYPE_ID int(10) unsigned not null
STATION_NAME char(64) from STATIONS.NAME
STATION_NAME varchar(64) from STATIONS.NAME
FORMAT int(10) unsigned
CHANNELS int(10) unsigned
SAMPRATE int(10) unsigned
BITRATE int(10) unsigned
QUALITY int(10) unsigned
URL char(255)
URL_USERNAME char(64)
URL_PASSWORD char(64)
URL varchar(255)
URL_USERNAME varchar(64)
URL_PASSWORD varchar(64)
ENABLE_METADATA enum('N','Y')
NORMALIZATION_LEVEL int(11) signed

View File

@@ -0,0 +1,10 @@
REPORT_GROUPS Table Layout for Rivendell
The REPORT_GROUPS table holds data which groups are referenced by
a given report configuration.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary Key
REPORT_NAME varchar(64)
GROUP_NAME varchar(10)

View File

@@ -0,0 +1,10 @@
REPORT_SERVICES Table Layout for Rivendell
The REPORT_SERVICES table holds data which services are referenced by
a given report configuration.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary Key
REPORT_NAME varchar(64)
SERVICE_NAME varchar(10)

View File

@@ -0,0 +1,10 @@
REPORT_STATIONS Table Layout for Rivendell
The REPORT_STATIONS table holds data which hosts are referenced by
a given report configuration.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary Key
REPORT_NAME varchar(64)
STATION_NAME varchar(64)

View File

@@ -5,24 +5,24 @@ The REPORTS table holds data concerning each report configured on the system.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary Key
NAME char(64)
DESCRIPTION char(64)
NAME varchar(64)
DESCRIPTION varchar(64)
EXPORT_FILTER int(11)
EXPORT_PATH char(255)
EXPORT_PATH varchar(191)
POST_EXPORT_CMD text
WIN_EXPORT_PATH char(255)
WIN_EXPORT_PATH varchar(191)
WIN_POST_EXPORT_CMD text
EXPORT_TFC enum('N','Y')
EXPORT_MUS enum('N','Y')
FORCE_MUS enum('N','Y')
EXPORT_GEN enum('N','Y')
STATION_ID char(16)
STATION_ID varchar(16)
CART_DIGITS int(10) unsigned
USE_LEADING_ZEROS enum('N','Y')
LINES_PER_PAGE int(11)
SERVICE_NAME char(64)
SERVICE_NAME varchar(64)
STATION_TYPE int(11)
STATION_FORMAT char(64)
STATION_FORMAT varchar(64)
FILTER_ONAIR_FLAG enum('N','Y')
FILTER_GROUPS enum('N','Y')
START_TIME time

View File

@@ -7,6 +7,6 @@ to a given hour on a service's grid.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(11) signed Primary Key
SERVICE_NAME char(10) From SERVICES.NAME
SERVICE_NAME varchar(10) From SERVICES.NAME
HOUR int(11) signed
CLOCK_NAME char(64) From CLOCKS.NAME
CLOCK_NAME varchar(64) From CLOCKS.NAME

View File

@@ -0,0 +1,11 @@
SERVICE_PERMS Table Layout for Rivendell
The SERVICE_PERMS table holds data concerning which is permitted
to run which service.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary Key
STATION_NAME varchar(64) From CLOCKS.NAME
SERVICE_NAME varchar(10) From SERVICES.NAME

View File

@@ -6,25 +6,25 @@ table:
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
NAME char(10) unsigned Primary Key
DESCRIPTION char(255)
NAME_TEMPLATE char(255)
DESCRIPTION_TEMPLATE char(255)
PROGRAM_CODE char(255)
NAME varchar(10) unsigned Primary Key
DESCRIPTION varchar(191)
NAME_TEMPLATE varchar(191)
DESCRIPTION_TEMPLATE varchar(191)
PROGRAM_CODE varchar(191)
CHAIN_LOG enum('N','Y')
TRACK_GROUP char(10) From GROUPS.NAME
AUTOSPOT_GROUP char(10) From GROUPS.NAME
TRACK_GROUP varchar(10) From GROUPS.NAME
AUTOSPOT_GROUP varchar(10) From GROUPS.NAME
AUTO_REFRESH enum('N','Y')
DEFAULT_LOG_SHELFLIFE int(11)
LOG_SHELFLIFE_ORIGIN int(11) 0=Air Date, 1=Log Creation
ELR_SHELFLIFE int(11)
TFC_PATH char(255)
TFC_PATH varchar(191)
TFC_PREIMPORT_CMD text
TFC_WIN_PATH char(255)
TFC_WIN_PATH varchar(191)
TFC_WIN_PREIMPORT_CMD text
TFC_IMPORT_TEMPLATE char(64) From IMPORT_TEMPLATES.NAME
TFC_LABEL_CART char(32)
TFC_TRACK_CART char(32)
TFC_IMPORT_TEMPLATE varchar(64) From IMPORT_TEMPLATES.NAME
TFC_LABEL_CART varchar(32)
TFC_TRACK_CART varchar(32)
TFC_CART_OFFSET int(11)
TFC_CART_LENGTH int(11)
TFC_TITLE_OFFSET int(11)
@@ -35,8 +35,6 @@ TFC_MINUTES_OFFSET int(11)
TFC_MINUTES_LENGTH int(11)
TFC_SECONDS_OFFSET int(11)
TFC_SECONDS_LENGTH int(11)
TFC_LENGTH_OFFSET int(11) RETIRED
TFC_LENGTH_LENGTH int(11) RETIRED
TFC_LEN_HOURS_OFFSET int(11)
TFC_LEN_HOURS_LENGTH int(11)
TFC_LEN_MINUTES_OFFSET int(11)
@@ -49,15 +47,15 @@ TFC_EVENT_ID_OFFSET int(11)
TFC_EVENT_ID_LENGTH int(11)
TFC_ANNC_TYPE_OFFSET int(11)
TFC_ANNC_TYPE_LENGTH int(11)
MUS_PATH char(255)
MUS_PATH varchar(191)
MUS_PREIMPORT_CMD text
MUS_WIN_PATH char(255)
MUS_WIN_PATH varchar(191)
MUS_WIN_PREIMPORT_CMD text
MUS_IMPORT_TEMPLATE char(64) From IMPORT_TEMPLATES.NAME
MUS_LABEL_CART char(32)
MUS_TRACK_CART char(32)
MUS_BREAK_STRING char(64)
MUS_TRACK_STRING char(64)
MUS_IMPORT_TEMPLATE varchar(64) From IMPORT_TEMPLATES.NAME
MUS_LABEL_CART varchar(32)
MUS_TRACK_CART varchar(32)
MUS_BREAK_STRING varchar(64)
MUS_TRACK_STRING varchar(64)
MUS_CART_OFFSET int(11)
MUS_CART_LENGTH int(11)
MUS_TITLE_OFFSET int(11)
@@ -74,8 +72,6 @@ MUS_LEN_MINUTES_OFFSET int(11)
MUS_LEN_MINUTES_LENGTH int(11)
MUS_LEN_SECONDS_OFFSET int(11)
MUS_LEN_SECONDS_LENGTH int(11)
MUS_LENGTH_OFFSET int(11) RETIRED
MUS_LENGTH_LENGTH int(11) RETIRED
MUS_DATA_OFFSET int(11)
MUS_DATA_LENGTH int(11)
MUS_EVENT_ID_OFFSET int(11)

View File

@@ -6,8 +6,8 @@ FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
ID int(10) unsigned Primary key, auto_increment
SCHED_STACK_ID int(10) unsigned
SERVICE_NAME char(10) From SERVICES.NAME
SERVICE_NAME varchar(10) From SERVICES.NAME
CART int(10) unsigned From CART.NUMBER
ARTIST varchar(255) From CART.ARTIST
SCHED_CODES varchar(255)
ARTIST varchar(191) From CART.ARTIST
SCHED_CODES varchar(191)
SCHEDULED_AT datetime

View File

@@ -1,28 +1,27 @@
STATIONS Table Layout for Rivendell
The STATIONS table contains data about each workstation in the system.
Following is the layout of a record in the SERVICES table:
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
NAME char(64) Primary Key
SHORT_NAME char(64)
DESCRIPTION char(64) Indexed
USER_NAME char(255) Current User
DEFAULT_NAME char(255) Default User
IPV4_ADDRESS char(15)
HTTP_STATION char(64) From STATIONS.NAME
CAE_STATION char(64) From STATIONS.NAME
NAME varchar(64) Primary Key
SHORT_NAME varchar(64)
DESCRIPTION varchar(64) Indexed
USER_NAME varchar(255) Current User
DEFAULT_NAME varchar(255) Default User
IPV4_ADDRESS varchar(15)
HTTP_STATION varchar(64) From STATIONS.NAME
CAE_STATION varchar(64) From STATIONS.NAME
TIME_OFFSET int(11)
BROADCAST_SECURITY int(10) unsigned 0=HostSec, 1=UserSec
HEARTBEAT_CART int(10) unsigned
HEARTBEAT_INTERVAL int(10) unsigned
STARTUP_CART int(10) unsigned
EDITOR_PATH char(255)
EDITOR_PATH varchar(255)
FILTER_MODE int(11) 0=Synchronous, 1=Asynchronous
START_JACK enum('Y','N')
JACK_SERVER_NAME char(64)
JACK_COMMAND_LINE char(255)
JACK_SERVER_NAME varchar(64)
JACK_COMMAND_LINE varchar(255)
JACK_PORTS int(11) signed
CUE_CARD int(11) signed
CUE_PORT int(11) signed
@@ -41,6 +40,6 @@ HAVE_TWOLAME enum('N','Y')
HAVE_LAME enum('N','Y')
HAVE_MPG321 enum('N','Y')
HAVE_MP4_DECODE enum('N','Y')
HPI_VERSION char(16)
JACK_VERSION char(16)
ALSA_VERSION char(16)
HPI_VERSION varchar(16)
JACK_VERSION varchar(16)
ALSA_VERSION varchar(16)

View File

@@ -0,0 +1,15 @@
SWITCHER_NODES Table Layout for Rivendell
The SWITCHER_NODES table holds data on Livewire nodes being used
as switcher devices.
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------
ID int(11) Primary key, auto_increment
STATION_NAME varchar(64)
MATRIX int(11)
BASE_OUTPUT int(11)
HOSTNAME varchar(64)
PASSWORD varchar(64)
TCP_PORT int(11)
DESCRIPTION varchar(191)

Some files were not shown because too many files have changed in this diff Show More