Exemplo n.º 1
0
void GetEEPRomData(uint8_t start, uint8_t stop, uint8_t * data) {
//	println_W("Getting eeprom page: ");p_int_W(start+DATASTART);print_W(" to ");p_int_W(stop+DATASTART);
	//WORD_VAL raw;
	uint8_t i = 0;
	if (start > stop) {
		//println_W("###ERROR eeprom");
		return;
	}
	int total = 0;
	do {
		total++;
		if (total > 5)
			return;
		LoadCorePacket(&downstreamPacketTemp);
		for (i = 0; i < (stop - start); i++) {
			//Writes over the old packet to avoid mis-reads
			downstreamPacketTemp.use.data[i] = data[i];
		}
		downstreamPacketTemp.use.head.Method = BOWLER_GET;
		downstreamPacketTemp.use.head.RPC = GetRPCValue(eepd);
		downstreamPacketTemp.use.data[0] = start + DATASTART;
		downstreamPacketTemp.use.data[1] = stop + DATASTART;
		downstreamPacketTemp.use.head.DataLegnth = 6;
		SendPacketToCoProc(&downstreamPacketTemp);
		buttonCheck(12);
	} while (downstreamPacketTemp.use.head.RPC != GetRPCValue(eepd));

	for (i = 0; i < (stop - start); i++) {
		data[i] = downstreamPacketTemp.use.data[i + 1];
	}
//	println_W("Rx<<");
//	printBowlerPacketDEBUG(&downstreamPacketTemp,WARN_PRINT);
}
Exemplo n.º 2
0
void CheckRev(void) {
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_GET;
	downstreamPacketTemp.use.head.RPC = GetRPCValue("_rev");
	downstreamPacketTemp.use.head.DataLegnth = 4;
	SendPacketToCoProc(&downstreamPacketTemp);
	if ((downstreamPacketTemp.use.data[0] == MAJOR_REV)
			&& (downstreamPacketTemp.use.data[1] == MINOR_REV)
			&& (downstreamPacketTemp.use.data[2] == FIRMWARE_VERSION)) {
		SetColor(0, 0, 1);
	} else {
		//SetColor(1, 0, 0);
		println_I("Rev. Check Failed! AVR:");
		p_int_I(downstreamPacketTemp.use.data[0]);
		print_I(".");
		p_int_I(downstreamPacketTemp.use.data[1]);
		print_I(".");
		p_int_I(downstreamPacketTemp.use.data[2]);
		print_I(" PIC:");
		p_int_I(MAJOR_REV);
		print_I(".");
		p_int_I(MINOR_REV);
		print_I(".");
		p_int_I(FIRMWARE_VERSION);

	}
}
Exemplo n.º 3
0
void LoadGACM(BowlerPacket * pack) {
	LoadCorePacket(pack);
	pack->use.head.Method = BOWLER_GET;
	pack->use.head.RPC = GetRPCValue("gacm");
	pack->use.head.DataLegnth = 4;
	SetCRC(&downstreamPacketTemp);
}
Exemplo n.º 4
0
void setCoProcBrownOutMode(boolean b) {

	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_CRIT;
	downstreamPacketTemp.use.head.RPC = GetRPCValue("_pwr");
	downstreamPacketTemp.use.head.DataLegnth = 4 + 1;
	downstreamPacketTemp.use.data[0] = b;
	SendPacketToCoProc(&downstreamPacketTemp);

}
Exemplo n.º 5
0
uint8_t SetCoProConfiguration(uint8_t pin, int32_t mode) {
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_CRIT;
	downstreamPacketTemp.use.head.RPC = GetRPCValue("cchn");
	downstreamPacketTemp.use.data[0] = pin;
	downstreamPacketTemp.use.data[1] = true;
	downstreamPacketTemp.use.data[2] = 1;
	set32bit(&downstreamPacketTemp, mode, 3);

	downstreamPacketTemp.use.head.DataLegnth = 4 + 3 + 4;
	SendPacketToCoProc(&downstreamPacketTemp);

	return false;
}
Exemplo n.º 6
0
void DownstreamSerialStreamSet(BYTE_FIFO_STORAGE * txBuffer) {
	SetColor(0, 1, 0);
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.RPC = GetRPCValue("strm");
	downstreamPacketTemp.use.head.MessageID = 3;
	downstreamPacketTemp.use.head.Method = BOWLER_POST;
	downstreamPacketTemp.use.data[0] = 16; //the serial rx pin
	downstreamPacketTemp.use.data[1] = FifoGetByteCount(txBuffer);
	FifoGetByteStream(txBuffer, &downstreamPacketTemp.use.data[2],
			downstreamPacketTemp.use.data[1]);
	downstreamPacketTemp.use.head.DataLegnth = 4 + 1 + 1
			+ downstreamPacketTemp.use.data[1];
	SendPacketToCoProc(&downstreamPacketTemp);
}
Exemplo n.º 7
0
void pushBufferEmpty(){
    	LoadCorePacket(& packetTemp);
	packetTemp.use.head.Method=BOWLER_ASYN;
	packetTemp.use.head.MessageID = 1;
	packetTemp.use.head.RPC = GetRPCValue("_sli");
	INT32_UNION tmp;
        tmp.Val=lastPushedBufferSize;
        packetTemp.use.data[0]=tmp.byte.FB;
        packetTemp.use.data[1]=tmp.byte.TB;
        packetTemp.use.data[2]=tmp.byte.SB;
        packetTemp.use.data[3]=tmp.byte.LB;
        packetTemp.use.head.DataLegnth=4+4;
        asyncCallback(&packetTemp);
}
Exemplo n.º 8
0
void GetPPMDataToPacket(BowlerPacket * Packet){
	//println_I("Getting PPM values");
	int i;
	LoadCorePacket(Packet);
	Packet->use.head.Method=BOWLER_POST;
	Packet->use.head.RPC=GetRPCValue("strm");
	Packet->use.data[0]=23;
	Packet->use.data[1]=NUM_PPM_CHAN*2;
	for(i=0;i<NUM_PPM_CHAN;i++){
		Packet->use.data[2+i]=ppmData[i];
	}
	for(i=0;i<NUM_PPM_CHAN;i++){
		Packet->use.data[2+i+NUM_PPM_CHAN]=ppmLink[i];
	}
	Packet->use.head.DataLegnth=4+1+1+(NUM_PPM_CHAN*2);
	Packet->use.head.MessageID=0;
	SetCRC(Packet);
}
Exemplo n.º 9
0
void DownstreamSerialStreamGet(BYTE_FIFO_STORAGE * rxBuffer) {
	int i;
	uint8_t err;
	SetColor(0, 1, 0);
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.RPC = GetRPCValue("strm");
	downstreamPacketTemp.use.head.MessageID = 3;
	downstreamPacketTemp.use.head.Method = BOWLER_GET;
	downstreamPacketTemp.use.data[0] = 17; //the serial rx pin
	downstreamPacketTemp.use.head.DataLegnth = 4 + 1;
	SendPacketToCoProc(&downstreamPacketTemp);

	for (i = 0; i < downstreamPacketTemp.use.data[1]; i++) {
		FifoAddByte(rxBuffer, downstreamPacketTemp.use.data[2 + i], &err);
	}
	//println_W("Syncing UART ");
	//printPacket(&downstreamPacketTemp, WARN_PRINT);
}
Exemplo n.º 10
0
void checkPositionChange(){
    int i;
    float tmp[4];
    updateCurrentPositions();

    tmp[0]=xCurrent;
    tmp[1]=yCurrent;
    tmp[2]=zCurrent;
    tmp[3] = getLinkAngle(3);
    if(     tmp[0]!=lastXYZE[0]||
            tmp[1]!=lastXYZE[1]||
            tmp[2]!=lastXYZE[2]||
            tmp[3]!=lastXYZE[3]){
        for(i=0;i<4;i++){
           lastXYZE[i] =tmp[i];
        }

//        println_I("Current Voltage of sensor");p_fl_E(getAdcVoltage(mapHeaterIndex(HEATER0_INDEX),10));
//        print_E(" Temp = ");p_fl_E(getHeaterTempreture(HEATER0_INDEX));
//        print_E(" Raw ADC = ");p_int_E(getAdcRaw(mapHeaterIndex(HEATER0_INDEX),10));

//        println_I("Current  position X=");p_fl_E(lastXYZE[0]);
//        print_E(" Y=");p_fl_E(lastXYZE[1]);
//        print_E(" Z=");p_fl_E(lastXYZE[2]);
//        print_E(" extr=");p_fl_E(lastXYZE[3]);
        INT32_UNION PID_Temp;
        LoadCorePacket(& packetTemp);
        packetTemp.use.head.DataLegnth=4;
        packetTemp.use.head.RPC = GetRPCValue("cpos");
        int i;
        for(i=0;i<4;i++){
                PID_Temp.Val=lastXYZE[i];
                packetTemp.use.data[0+(i*4)]=PID_Temp.byte.FB;
                packetTemp.use.data[1+(i*4)]=PID_Temp.byte.TB;
                packetTemp.use.data[2+(i*4)]=PID_Temp.byte.SB;
                packetTemp.use.data[3+(i*4)]=PID_Temp.byte.LB;
                packetTemp.use.head.DataLegnth+=4;
        }
        packetTemp.use.head.Method=BOWLER_ASYN;
        FixPacket(&packetTemp);
	asyncCallback(& packetTemp);
    }
}
Exemplo n.º 11
0
void SetLockCode(char * code) {
	//WORD_VAL raw;
	uint8_t i = 0;
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_POST;
	downstreamPacketTemp.use.head.RPC = GetRPCValue(eepd);
	downstreamPacketTemp.use.data[0] = LOCKSTART;
	downstreamPacketTemp.use.data[1] = DATASTART;
	while (code[i] != '\0') {
		downstreamPacketTemp.use.data[2 + i] = code[i];
		i++;
		buttonCheck(8);
		if (i == LOCKSIZE)
			break;
	}
	downstreamPacketTemp.use.data[2 + i] = '\0';
	downstreamPacketTemp.use.head.DataLegnth = 6 + LOCKSIZE;
	SendPacketToCoProc(&downstreamPacketTemp);
}
Exemplo n.º 12
0
void loadCurrentPosition(BowlerPacket * Packet){
        LoadCorePacket(Packet);
	Packet->use.head.Method=BOWLER_STATUS;
	Packet->use.head.MessageID = 1;
	Packet->use.head.RPC = GetRPCValue("ctps");
	INT32_UNION tmp;
        tmp.Val=lastPushedBufferSize;
        Packet->use.data[0]=tmp.byte.FB;
        Packet->use.data[1]=tmp.byte.TB;
        Packet->use.data[2]=tmp.byte.SB;
        Packet->use.data[3]=tmp.byte.LB;

        tmp.Val=SIZE_OF_PACKET_BUFFER;
        Packet->use.data[4]=tmp.byte.FB;
        Packet->use.data[5]=tmp.byte.TB;
        Packet->use.data[6]=tmp.byte.SB;
        Packet->use.data[7]=tmp.byte.LB;

        Packet->use.head.DataLegnth=4+4+4;
}
Exemplo n.º 13
0
boolean GetLockCode(char * code) {
	//WORD_VAL raw;
	uint8_t i = 0;
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_GET;
	downstreamPacketTemp.use.head.RPC = GetRPCValue(eepd);
	downstreamPacketTemp.use.data[0] = LOCKSTART;
	downstreamPacketTemp.use.data[1] = DATASTART;
	downstreamPacketTemp.use.head.DataLegnth = 6;
	SendPacketToCoProc(&downstreamPacketTemp);
	while (downstreamPacketTemp.use.data[i + 2] != '\0') {
		code[i] = downstreamPacketTemp.use.data[2 + i];
		i++;
		buttonCheck(10);
		if (i == LOCKSIZE)
			break;
	}
	code[i] = '\0';
	return isAscii(code);
}
Exemplo n.º 14
0
void SetEEPRomData(uint8_t start, uint8_t stop, uint8_t * data) {
	//println_W("Setting eeprom page: ");p_int_W(start+DATASTART);print_W(" to ");p_int_W(stop+DATASTART);
	//WORD_VAL raw;
	uint8_t i = 0;
	if (start >= stop)
		return;
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_POST;
	downstreamPacketTemp.use.head.RPC = GetRPCValue(eepd);
	downstreamPacketTemp.use.data[0] = start + DATASTART;
	downstreamPacketTemp.use.data[1] = stop + DATASTART;
	downstreamPacketTemp.use.data[2] = (stop - start);
	for (i = 0; i < (stop - start); i++) {
		downstreamPacketTemp.use.data[3 + i] = data[i];
	}

	downstreamPacketTemp.use.head.DataLegnth = 6 + stop - start + 1;
	//printBowlerPacketDEBUG(&downstreamPacketTemp,WARN_PRINT);
	SendPacketToCoProc(&downstreamPacketTemp);
}
Exemplo n.º 15
0
uint8_t SetAllCoProcValues() {
	int i = 0;
	boolean send = true;
	int32_t tmp;
	if (send) {
		LoadCorePacket(&downstreamPacketTemp);
		downstreamPacketTemp.use.head.Method = BOWLER_POST;
		downstreamPacketTemp.use.head.RPC = GetRPCValue("sacv");
		set32bit(&downstreamPacketTemp, 0, 0);   // setting the translation time
		downstreamPacketTemp.use.data[4] = GetNumberOfIOChannels();
		for (i = 0; i < GetNumberOfIOChannels(); i++) {
			tmp = getBcsIoDataTable(i)->PIN.currentValue;
			down[i].changeValue = false;
			set32bit(&downstreamPacketTemp, tmp, (i * 4) + 5);
		}

		downstreamPacketTemp.use.head.DataLegnth = 4 + 4 + 1
				+ (4 * GetNumberOfIOChannels());
		SendPacketToCoProc(&downstreamPacketTemp);
	}

	for (i = 0; i < GetNumberOfIOChannels(); i++) {
		int index = (i * 4) + 1;
		if (isOutputMode(GetChannelMode(i)) == false) {
            tmp= get32bit(&downstreamPacketTemp, index);
			boolean back = (tmp != getBcsIoDataTable(i)->PIN.currentValue);

			setDataTableCurrentValue(i,tmp);
			if (back) {
				getBcsIoDataTable(i)->PIN.asyncDataenabled = true;
			}
		}
		if (GetChannelMode(i) == IS_SERVO) {
			SetServoPos(i, get32bit(&downstreamPacketTemp, index) & 0x000000ff);
		}
		if (GetChannelMode(i) == IS_UART_RX) {

		}
	}
	return true;
}
Exemplo n.º 16
0
void SetName(char * name) {
	//WORD_VAL raw;
	uint8_t i = 0;
	println_E(name);
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_POST;
	downstreamPacketTemp.use.head.RPC = GetRPCValue(eepd);
	downstreamPacketTemp.use.data[0] = NAMESTART;
	downstreamPacketTemp.use.data[1] = LOCKSTART;
	while (name[i] != '\0') {
		downstreamPacketTemp.use.data[2 + i] = name[i];
		i++;
		buttonCheck(9);
		if (i == NAMESIZE)
			break;
	}
	downstreamPacketTemp.use.data[2 + i] = '\0';
	downstreamPacketTemp.use.head.DataLegnth = 6 + i + 1;
	printPacket(&downstreamPacketTemp,ERROR_PRINT);
	SendPacketToCoProc(&downstreamPacketTemp);
}
Exemplo n.º 17
0
uint8_t GetCoProConfigurations() {

	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_CRIT;
	downstreamPacketTemp.use.head.RPC = GetRPCValue("cchn");
	downstreamPacketTemp.use.data[0] = 0xff;
	downstreamPacketTemp.use.data[1] = false;
	downstreamPacketTemp.use.data[2] = 1;
	set32bit(&downstreamPacketTemp, 0, 3);

	downstreamPacketTemp.use.head.DataLegnth = 4 + 3 + 4;
	SendPacketToCoProc(&downstreamPacketTemp);
	int i;
	for (i = 0; i < GetNumberOfIOChannels(); i++) {
		down[i].currentConfiguration = get32bit(&downstreamPacketTemp,
				1 + (i * 4));
		//println_E(__FILE__);println_E("GetCoProConfigurations");
		//setDataTableCurrentValue(i,down[i].currentConfiguration);
	}

	return false;
}
Exemplo n.º 18
0
void DownstreamPowerChange(void) {

	LoadCorePacket(&downstreamPacketTemp);
	POWER(&downstreamPacketTemp);

	downstreamPacketTemp.use.data[2] = GetRawVoltageCode(0);
	downstreamPacketTemp.use.data[3] = GetRawVoltageCode(1);

	if (downstreamPacketTemp.use.data[0] == bankA
			&& downstreamPacketTemp.use.data[1] == bankB
			&& downstreamPacketTemp.use.data[2] == batteryCode0
			&& downstreamPacketTemp.use.data[3] == batteryCode1)
		return;
	bankA = downstreamPacketTemp.use.data[0];
	bankB = downstreamPacketTemp.use.data[1];
	batteryCode0 = downstreamPacketTemp.use.data[2];
	batteryCode1 = downstreamPacketTemp.use.data[3];

	SendPacketToCoProc(&downstreamPacketTemp);
	UpstreamPushPowerChange(bankA, bankB, GetRawVoltage(), getPowerOverRide());

}
Exemplo n.º 19
0
void _SetChannelValueCoProc(uint8_t PIN, uint8_t state) {
	uint8_t retry = 0;
	do {
		if (retry > 0) {
			//println_E("#*#*SetChannelValueCoProc did not return RDY pin: ");p_int_E(PIN);print_E(" mode: ");printMode(GetChannelMode(PIN),ERROR_PRINT);
			//printPacket(&downstreamPacketTemp,ERROR_PRINT);
			return;
		}
		LoadCorePacket(&downstreamPacketTemp);
		downstreamPacketTemp.use.head.Method = BOWLER_POST;
		downstreamPacketTemp.use.head.RPC = GetRPCValue("schv");
		downstreamPacketTemp.use.data[0] = PIN;
		set32bit(&downstreamPacketTemp, state, 1);
		set32bit(&downstreamPacketTemp, 0, 5);			// zero ms
		downstreamPacketTemp.use.head.DataLegnth = 4 + 1 + 4 + 4;
		SendPacketToCoProc(&downstreamPacketTemp);
		setDataTableCurrentValue(PIN, state);
		retry++;
		buttonCheck(13);
	} while (downstreamPacketTemp.use.head.RPC != _RDY);

}
Exemplo n.º 20
0
uint8_t SetAllCoProcMode() {
	int i = 0;
	boolean send = false;
	for (i = 0; i < GetNumberOfIOChannels(); i++) {
		if (down[i].changeMode == true) {
			send = true;
		}
	}
	if (send) {

		LoadCorePacket(&downstreamPacketTemp);
		downstreamPacketTemp.use.head.Method = BOWLER_POST;
		downstreamPacketTemp.use.head.RPC = GetRPCValue("sacm");
		downstreamPacketTemp.use.data[0] = GetNumberOfIOChannels();
		for (i = 0; i < GetNumberOfIOChannels(); i++) {
			downstreamPacketTemp.use.data[i + 1] =GetChannelMode(i) ;
			down[i].changeMode = false;
		}
		downstreamPacketTemp.use.head.DataLegnth = 4 + 1+ GetNumberOfIOChannels();
        //println_I("Sending mode sync packet");printPacket(&downstreamPacketTemp,WARN_PRINT);
		SendPacketToCoProc(&downstreamPacketTemp);
//		for (i = 0; i < NUM_PINS; i++) {
//			if (downstreamPacketTemp.use.data[i + 1] == NO_CHANGE) {
//				//getBcsIoDataTable(i)->PIN.currentChannelMode = IS_DI;
//				SetChannelModeDataTable(i,IS_DI);
//				down[i].changeMode = true;	// force a sync of the no valid mode
//				//println_E("FAULT: the mode was set to NO_CHANGE");
//			} else {
//				//getBcsIoDataTable(i)->PIN.currentChannelMode =downstreamPacketTemp.use.data[i + 1];
//				SetChannelModeDataTable(i,downstreamPacketTemp.use.data[i + 1]);
//				down[i].changeMode = false;
//			}
//		}

	}
	return true;
}
Exemplo n.º 21
0
boolean GetName(char * name) {
	//WORD_VAL raw;
	uint8_t i = 0;
	LoadCorePacket(&downstreamPacketTemp);
	downstreamPacketTemp.use.head.Method = BOWLER_GET;
	downstreamPacketTemp.use.head.RPC = GetRPCValue(eepd);
	downstreamPacketTemp.use.data[0] = NAMESTART;
	downstreamPacketTemp.use.data[1] = LOCKSTART;
	downstreamPacketTemp.use.head.DataLegnth = 6;
	SendPacketToCoProc(&downstreamPacketTemp);

	printPacket(&downstreamPacketTemp,WARN_PRINT);

	while (downstreamPacketTemp.use.data[i] != '\0') {
		name[i] = downstreamPacketTemp.use.data[i];
		i++;
		buttonCheck(11);
		if (i == NAMESIZE)
			break;
	}
	name[i] = '\0';
	println_W(name);
	return isAscii(name);
}