Exemple #1
0
/* @note main context */
void gpsFhRxEvent(char c)
{
	switch (state)
	{
	case WAIT:
		if (c == '$')
			setState(RECEIVING);
		break;
	case RECEIVING:
		switch (c)
		{
		CASE_FRAME_ERROR
		case '*':
			setState(CHECKSUM_H);
			break;
		default:
			checksum ^= c;
			if (ptr < &sentence[SENTENCE_LEN])
				*ptr++ = c;
		}
		break;
	case CHECKSUM_H:
		switch (c)
		{
		CASE_FRAME_ERROR
		default:
			checksum ^= n2b(c) << 4;
			setState(CHECKSUM_L);
		}
		break;
	case CHECKSUM_L:
		switch (c)
		{
		CASE_FRAME_ERROR
		default:
			checksum ^= n2b(c);
			setState(WAIT);
			if (checksum != 0) {
				error(GPS_ERR_CHECKSUM_ERROR, &checksum);
				break;
			}
			if (ptr >= &sentence[SENTENCE_LEN]) {
				error(GPS_ERR_BUFFER_OVERFLOW, NULL);
				break;
			}
			*ptr = 0;

			gpsActivity();
			gpsFrameEvent(sentence, ptr - sentence);
		}
		break;
	}
}
Exemple #2
0
int main(){
	Node head1(3);
	Node n1(2);
	Node n2(1);
	Node n3(5);
	Node n4(6);
	head1.Left=&n1;
	head1.Right=&n3;
	n1.Left=&n2;
	n3.Right=&n4;

	Node head2(9);
	Node n1b(8);
	Node n2b(2);
	Node n3b(10);
	Node n4b(11);
	head2.Left=&n1b;
	head2.Right=&n3b;
	n1b.Left=&n2b;
	n3b.Right=&n4b;

	std::cout << " the median of the two arrays is : " << std::setprecision( 2 )<< arrayMedian(&head1,&head2)<<std::endl;

	return 0;
}