package csp;
import javax.realtime.AbsoluteTime;
import javax.realtime.Clock;
import javax.realtime.RawMemory;
import javax.safetycritical.Terminal;
import com.jopdesign.io.I2CFactory;
import com.jopdesign.sys.Const;
import csp.scj.watchdog.GeneralIOFactory;
import csp.scj.watchdog.I2CBusController;
import csp.scj.watchdog.I2CInterface;
public class ImmortalEntry {
static AbsoluteTime clk = null;
public static Logger log = null;
public static int eventsLogged = 0;
public static DumpLog dumpLog = null;
public static Terminal term = null;
static I2CFactory fact = null;
// public static I2Cport portA = null;
// public static I2Cport portB = null;
public static I2CBusController portA = null;
public static I2CBusController portB = null;
public static I2CInterface i2c_a = null;
public static I2CInterface i2c_b = null;
public static Node[] slaves;
public static BufferPool bufferPool = null;
public static ConnectionPool connectionPool = null;
public static CRC32 crc32 = null;
public static Connection ping = null;
public static void setup() {
clk = Clock.getRealtimeClock().getTime();
log = new Logger();
dumpLog = new DumpLog();
term = Terminal.getTerminal();
term.writeln("Startup...");
fact = I2CFactory.getFactory();
GeneralIOFactory factory = new GeneralIOFactory();
RawMemory.registerAccessFactory(factory);
// Source IIC
// portA = fact.getI2CportA();
// portA.initialize(Constants.DEVICE_A_ADDR, false);
portA = new I2CBusController(Const.I2C_A_BASE);
portA.initialize(Constants.DEVICE_A_ADDR, false);
i2c_a = new I2CInterface(portA);
// Destination IIC
// portB = fact.getI2CportB();
// portB.initialize(Constants.DEVICE_B_ADDR, false);
portB = new I2CBusController(Const.I2C_B_BASE);
portB.initialize(Constants.DEVICE_B_ADDR, false);
i2c_b = new I2CInterface(portB);
// Initialize CSP buffer pool
bufferPool = new BufferPool();
// Initialize CSP connection pool
connectionPool = new ConnectionPool();
if (Constants.CSP_USE_CRC32) {
crc32 = new CRC32();
}
ping = connectionPool.getConnection(Constants.DEVICE_A_ADDR, 0,
Constants.CSP_PING, 0, Constants.CSP_PRIO_NORM, 0, i2c_a, 1);
slaves = new Node[Constants.NUM_SLAVES];
for (int i = 0; i < Constants.NUM_SLAVES; i++) {
slaves[i] = new Node(i*3);
}
term.writeln("Setup ok...");
}
public static class DumpLog implements Runnable {
public int logEntry = 0;
public int selector = 0;
@Override
public void run() {
switch (selector) {
case 0:
log.printEntry(logEntry);
break;
case 1:
log.printNodeEntry(logEntry);
default:
break;
}
}
}
public static void initialParams(){
term.writeln("Max. CSP buffers: "+Constants.MAX_BUFFER_COUNT);
term.writeln("Max. Connections: "+Constants.CSP_MAX_CONNECTIONS);
term.writeln("Max. payload (words): "+ Constants.MAX_PAYLOAD_SIZE);
}
}