2010-08-10 04:34:06 +00:00
/* Very basic print functions, intended to be used with usb_debug_only.c
* http : //www.pjrc.com/teensy/
* Copyright ( c ) 2008 PJRC . COM , LLC
*
* Permission is hereby granted , free of charge , to any person obtaining a copy
* of this software and associated documentation files ( the " Software " ) , to deal
* in the Software without restriction , including without limitation the rights
* to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
* copies of the Software , and to permit persons to whom the Software is
* furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE .
*/
# include <avr/io.h>
# include <avr/pgmspace.h>
# include "print.h"
2011-01-28 15:44:05 +00:00
# include "sendchar.h"
2010-08-10 04:34:06 +00:00
2010-10-23 18:27:43 +00:00
bool print_enable = false ;
2011-09-17 13:39:50 +00:00
void print_S ( const char * s )
{
if ( ! print_enable ) return ;
char c ;
while ( 1 ) {
c = * s + + ;
if ( ! c ) break ;
if ( c = = ' \n ' ) sendchar ( ' \r ' ) ;
sendchar ( c ) ;
}
}
2010-08-10 04:34:06 +00:00
void print_P ( const char * s )
{
2010-10-23 18:27:43 +00:00
if ( ! print_enable ) return ;
2010-08-10 04:34:06 +00:00
char c ;
while ( 1 ) {
c = pgm_read_byte ( s + + ) ;
if ( ! c ) break ;
2011-01-28 15:44:05 +00:00
if ( c = = ' \n ' ) sendchar ( ' \r ' ) ;
sendchar ( c ) ;
2010-08-10 04:34:06 +00:00
}
}
void phex1 ( unsigned char c )
{
2010-10-23 18:27:43 +00:00
if ( ! print_enable ) return ;
2011-01-28 15:44:05 +00:00
sendchar ( c + ( ( c < 10 ) ? ' 0 ' : ' A ' - 10 ) ) ;
2010-08-10 04:34:06 +00:00
}
void phex ( unsigned char c )
{
2010-10-23 18:27:43 +00:00
if ( ! print_enable ) return ;
2010-08-10 04:34:06 +00:00
phex1 ( c > > 4 ) ;
phex1 ( c & 15 ) ;
}
void phex16 ( unsigned int i )
{
2010-10-23 18:27:43 +00:00
if ( ! print_enable ) return ;
2010-08-10 04:34:06 +00:00
phex ( i > > 8 ) ;
phex ( i ) ;
}
2010-08-22 14:58:37 +00:00
void pbin ( unsigned char c )
{
2010-10-23 18:27:43 +00:00
if ( ! print_enable ) return ;
2010-08-23 06:46:24 +00:00
for ( int i = 7 ; i > = 0 ; i - - ) {
2011-01-28 15:44:05 +00:00
sendchar ( ( c & ( 1 < < i ) ) ? ' 1 ' : ' 0 ' ) ;
2010-08-23 06:46:24 +00:00
}
}
void pbin_reverse ( unsigned char c )
{
2010-10-23 18:27:43 +00:00
if ( ! print_enable ) return ;
2010-08-23 06:46:24 +00:00
for ( int i = 0 ; i < 8 ; i + + ) {
2011-01-28 15:44:05 +00:00
sendchar ( ( c & ( 1 < < i ) ) ? ' 1 ' : ' 0 ' ) ;
2010-08-22 14:58:37 +00:00
}
}