/*
EIBD eib bus access and management daemon
Copyright (C) 2005-2007 Martin Koegler <mkoegler@auto.tuwien.ac.at>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "management.h"
int
Management_Connection::X_Progmode_On ()
{
CArray d;
if (A_Memory_Read (0x60, 1, d) == -1)
return -1;
if (!(d[0] & 0x01))
d[0] = d[0] ^ 0x81;
if (X_Memory_Write (0x60, d) != 0)
return -1;
return 0;
}
int
Management_Connection::X_Progmode_Off ()
{
CArray d;
if (A_Memory_Read (0x60, 1, d) == -1)
return -1;
if ((d[0] & 0x01))
d[0] = d[0] ^ 0x81;
if (X_Memory_Write (0x60, d) != 0)
return -1;
return 0;
}
int
Management_Connection::X_Progmode_Toggle ()
{
CArray d;
if (A_Memory_Read (0x60, 1, d) == -1)
return -1;
d[0] = d[0] ^ 0x81;
if (X_Memory_Write (0x60, d) != 0)
return -1;
return 0;
}
int
Management_Connection::X_Progmode_Status ()
{
CArray d;
if (A_Memory_Read (0x60, 1, d) == -1)
return -1;
if (d[0] & 0x01)
return 1;
else
return 0;
}
int
Management_Connection::X_Get_PEIType (int16_t & val)
{
int16_t v;
if (A_ADC_Read (4, 1, v) == -1)
return -1;
val = (v * 10 + 16) / 128;
return 0;
}
int
Management_Connection::X_PropertyScan (Array < PropertyInfo > &p)
{
p.resize (0);
PropertyInfo p1;
uchar obj, i;
obj = 0;
do
{
i = 0;
do
{
p1.obj = obj;
p1.property = 0;
if (A_Property_Desc
(obj, p1.property, i, p1.type, p1.count, p1.access) == -1)
return -1;
if (p1.property == 1 && p1.type == 4)
{
CArray a;
if (A_Property_Read (obj, 1, 1, 1, a) == -1)
return -1;
if (a () != 2)
return -1;
p1.count = (a[0] << 8) | (a[1]);
}
if (p1.property != 0)
{
p.resize (p () + 1);
p[p () - 1] = p1;
}
i++;
}
while (p1.property != 0);
obj++;
}
while (i != 1);
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1