beautypg.com

PNI TCM User Manual

Page 70

background image

PNI Sensor Corporation

DOC#1014688 r06

TCM User Manual

– July 2013

Page 65

mOut Dat a[ i ndex ++] = c ount >> 8;

mOut Dat a[ i ndex ++] = c ount & 0xFF;

/ / s t or e t he f r ame I D

mOut Dat a[ i ndex ++] = f r ameTy pe ;

/ / c opy t he dat a t o be sent

whi l e( l en- - ) mOut Dat a[ i ndex ++] = * dat a++;

/ / c omput e and add t he cr c

c r c = CRC( mOut Dat a, i ndex ) ;

mOut Dat a[ i ndex ++] = c r c >> 8 ;

mOut Dat a[ i ndex ++] = c r c & 0xFF ;

/ / Wr i t e bl ock wi l l c opy and send t he dat a out t he s er i al por t

mSer i al Por t - >Wr i t eBl ock ( mOut Dat a, i ndex ) ;

}



/ /
/ / Cal l t he f unc t i ons i n ser i al por t nec es sar y t o change t he
/ / baud r at e
/ /
v oi d CommPr ot ocol : : Set Baud( UI nt 32 baud)
{

mSer i al Por t - >Set BaudRat e( baud) ;

mSer i al Por t - >I nCl ear ( ) ;

/ / c l ear any dat a t hat was al r eady wai t i ng i n t he buf f er
}

/ /
/ / Updat e t he CRC f or t r ans mi t t ed and r ecei v ed dat a us i ng t he
/ / CCI TT 16bi t al gor i t hm ( X^ 16 + X^ 12 + X^ 5 + 1) .
/ /

UI nt 16 CommPr ot ocol : : CRC( voi d * dat a, UI nt 32 l en)
{

UI nt 8 * dat aPt r = ( UI nt 8 * ) dat a;

UI nt 32 i ndex = 0;


UI nt 16 c r c = 0;

whi l e( l en- - )

{

c r c = ( uns i gned char ) ( c r c >> 8) | ( cr c << 8) ;

c r c ^ = dat aPt r [ i ndex ++] ;

c r c ^ = ( unsi gned c har ) ( cr c & 0x f f ) >> 4;

c r c ^ = ( cr c << 8) << 4;

c r c ^ = ( ( c r c & 0xf f ) << 4) << 1;

}

r et ur n c r c ;

}

/ /
/ / Thi s i s cal l ed each t i me t hi s pr oces s get s a t ur n t o ex ec ut e.
/ /
v oi d CommPr ot ocol : : Cont r ol ( )
{
/ / I nLen r et ur ns t he number of by t es i n t he i nput buf f er of
/ / t he ser i al obj ec t t hat ar e av ai l abl e f or us t o r ead.

UI nt 32 i nLen = mSer i al Por t - >I nLen( ) ;