def swser_LCDpa(tx, opts={})
raise ArgumentError, "can only define tx from Fixnum, got #{tx.class}" unless tx.is_a?(Fixnum)
output_pin(tx)
rate = opts[:rate] ? opts[:rate] : 9600
if opts[:as]
@declarations << "SWSerLCDpa _#{opts[ :as ]} = SWSerLCDpa(#{tx});"
accessor = []
accessor << "SWSerLCDpa& #{opts[ :as ]}() {"
accessor << "\treturn _#{opts[ :as ]};"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, uint8_t b ) {"
accessor << "\treturn s.print( b );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, const char *str ) {"
accessor << "\treturn s.print( str );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, char c ) {"
accessor << "\treturn s.print( c );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, int i ) {"
accessor << "\treturn s.print( i );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, unsigned int i ) {"
accessor << "\treturn s.print( i );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, long i ) {"
accessor << "\treturn s.print( i );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, unsigned long i ) {"
accessor << "\treturn s.print( i );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, long i, int b ) {"
accessor << "\treturn s.print( i, b );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, char* str ) {"
accessor << "\treturn s.println( str );"
accessor << "}"
accessor << "void print( SWSerLCDpa& s, char* str ) {"
accessor << "\treturn s.print( str );"
accessor << "}"
accessor << "void println(SWSerLCDpa& s) {"
accessor << "\treturn s.println();"
accessor << "}"
accessor << "void clearscr(SWSerLCDpa& s) {"
accessor << "\treturn s.clearscr();"
accessor << "}"
accessor << "void home(SWSerLCDpa& s) {"
accessor << "\treturn s.home();"
accessor << "}"
accessor << "void setgeo( SWSerLCDpa& s, int i ) {"
accessor << "\treturn s.setgeo( i );"
accessor << "}"
accessor << "void setintensity( SWSerLCDpa& s, int i ) {"
accessor << "\treturn s.setintensity( i );"
accessor << "}"
accessor << "void intoBignum(SWSerLCDpa& s) {"
accessor << "\treturn s.intoBignum();"
accessor << "}"
accessor << "void outofBignum(SWSerLCDpa& s) {"
accessor << "\treturn s.outofBignum();"
accessor << "}"
accessor << "void setxy( SWSerLCDpa& s, int x, int y) {"
accessor << "\treturn s.setxy( x, y );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, char c ) {"
accessor << "\treturn s.println( c );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, const char c[] ) {"
accessor << "\treturn s.println( c );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, uint8_t b ) {"
accessor << "\treturn s.println( b );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, int i ) {"
accessor << "\treturn s.println( i );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, long i ) {"
accessor << "\treturn s.println( i );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, unsigned long i ) {"
accessor << "\treturn s.println( i );"
accessor << "}"
accessor << "void println( SWSerLCDpa& s, long i, int b ) {"
accessor << "\treturn s.println( i, b );"
accessor << "}"
@accessors << accessor.join( "\n" )
@signatures << "SWSerLCDpa& #{opts[ :as ]}();"
@other_setup << "_#{opts[ :as ]}.begin(#{rate});"
end
end