/* **************************************************** */
DMD_u32_t DMD_con_tcb_test( DMD_PARAMETER* param)
{
	DMD_u8_t	wd[256];
	DMD_u8_t	rd[256];
	DMD_s8_t	buf[20];
	DMD_u32_t	slv,adr;
	DMD_u32_t	wlen,rlen;
	DMD_u32_t	i,x;
	DMD_ERROR_t	ret;

	printf("TCB Test:input slave   >");
	fgets( buf , 20 , stdin );
	sscanf( buf , "%x" ,&slv );
	printf("TCB Test:input address >");
	fgets( buf , 20 , stdin );
	sscanf( buf , "%x" ,&adr);
	
	i=0;
	do
	{
		printf("TCB Test:write data(q for Exit) >");
		fgets( buf , 20 , stdin );
		if( buf[0] == 'q' ) break;
		sscanf( buf , "%x" , &x );
		wd[i] = (DMD_u8_t) x;
		i++;
	}
	while( i<256 );
	printf("TCB Test:read num (0:no read) >");
	fgets( buf , 20 , stdin );
	rlen = atoi(buf);
	wlen = i;
	
	ret = DMD_TCB_WriteRead( (DMD_u8_t)slv , (DMD_u8_t)adr , wd , wlen , rd , rlen  );
	if( ret == DMD_E_OK )
	{
		printf("slave       :%02x\n" , slv );
		printf("address     :%02x\n" , adr );
		printf("write       :");
		for(i=0;i<wlen;i++)
			printf("%02x ",wd[i]);
		printf("\n");
		printf("read        :");
		for(i=0;i<rlen;i++)
			printf("%02x ",rd[i]);
		printf("\n");
		
		
	}

	return ret;
}
/* '11/08/05 : OKAMOTO Implement "Through Mode". */
DMD_ERROR_t DMD_TCB_ReadAnyLength(DMD_u8_t	slvadr , DMD_u8_t *data  , DMD_u8_t rlen)
{
	return DMD_TCB_WriteRead( slvadr , 0 ,  0, 0 , data , rlen );
}
/* **************************************************** */
DMD_ERROR_t DMD_TCB_Read(DMD_u8_t	slvadr , DMD_u8_t adr , DMD_u8_t *data )
{
	return DMD_TCB_WriteRead( slvadr , adr ,  0, 0 , data , 1 );
}
/* '11/08/05 : OKAMOTO Implement "Through Mode". */
DMD_ERROR_t DMD_TCB_WriteAnyLength(DMD_u8_t	slvadr , DMD_u8_t adr , DMD_u8_t* data , DMD_u32_t wlen)
{
	return DMD_TCB_WriteRead( slvadr , adr , data , wlen , 0, 0 );
}
DMD_ERROR_t DMD_TCB_Write(DMD_u8_t	slvadr , DMD_u8_t adr , DMD_u8_t data )
{
	return DMD_TCB_WriteRead( slvadr , adr , &data , 1 , 0, 0 );
}