Index: impedance.c =================================================================== --- impedance.c (revision 31761) +++ impedance.c (revision 31762) @@ -26,6 +26,10 @@ #include "config.h" #include +#include +#include +#include +#include "impedance.h" #define TOM(x) RND_COORD_TO_MM(x) #define SQR(x) ((x)*(x)) @@ -42,3 +46,21 @@ return N0 / (2*M_PI * sqrt(2) * sqrt(Er+1)) * log(1+4*(h/weff)*(x1+x2)); } + +const char pcb_acts_impedance_microstrip[] = "impedance_microstrip(trace_width, trace_height, subst_height, dielectric)"; +const char pcb_acth_impedance_microstrip[] = "Calculate the approximated impedance of a microstrip transmission line, in ohms"; +fgw_error_t pcb_act_impedance_microstrip(fgw_arg_t *res, int argc, fgw_arg_t *argv) +{ + rnd_coord_t trace_width, trace_height, subst_height; + double dielectric; + + RND_ACT_CONVARG(1, FGW_KEYWORD, impedance_microstrip, trace_width = fgw_coord(&argv[1])); + RND_ACT_CONVARG(2, FGW_KEYWORD, impedance_microstrip, trace_height = fgw_coord(&argv[2])); + RND_ACT_CONVARG(3, FGW_KEYWORD, impedance_microstrip, subst_height = fgw_coord(&argv[3])); + RND_ACT_CONVARG(4, FGW_KEYWORD, impedance_microstrip, dielectric = argv[4].val.nat_double); + + res->type = FGW_DOUBLE; + res->val.nat_double = pcb_impedance_microstrip(trace_width, trace_height, subst_height, dielectric); + return 0; +} + Index: impedance.h =================================================================== --- impedance.h (revision 31761) +++ impedance.h (revision 31762) @@ -1,2 +1,7 @@ +#include + double pcb_impedance_microstrip(rnd_coord_t trace_width, rnd_coord_t trace_height, rnd_coord_t subst_height, double dielect); +extern const char pcb_acts_impedance_microstrip[]; +extern const char pcb_acth_impedance_microstrip[]; +fgw_error_t pcb_act_impedance_microstrip(fgw_arg_t *res, int argc, fgw_arg_t *argv); Index: test/config.h =================================================================== --- test/config.h (revision 31761) +++ test/config.h (nonexistent) @@ -1,4 +0,0 @@ -typedef int rnd_coord_t; - -#define RND_COORD_TO_MM(x) ((x)/1000000) -#define RND_MM_TO_COORD(x) ((x)*1000000) Index: test/Makefile =================================================================== --- test/Makefile (revision 31761) +++ test/Makefile (revision 31762) @@ -1,6 +1,8 @@ -CFLAGS = -Wall -I. -LDFLAGS = -lm -main: main.o +CFLAGS = -Wall -I. -I../../../src -I../../../src_3rd -I../../.. +LDFLAGS = -lm -ldl +LIBRND = ../../../src/librnd-hid.a ../../../src/librnd-3rd.a -main.o: main.c ../impedance.c config.h +main: main.o $(LIBRND) +main.o: main.c ../impedance.c glue.c + Index: test/glue.c =================================================================== --- test/glue.c (nonexistent) +++ test/glue.c (revision 31762) @@ -0,0 +1,17 @@ +/* glue for hidlib */ + +#include + +const char *rnd_menu_file_paths[4]; +const char *rnd_menu_name_fmt = "pcb-menu-%s.lht"; + +const char *rnd_hidlib_default_embedded_menu = ""; + +void rnd_hidlib_crosshair_move_to(rnd_hidlib_t *hl, rnd_coord_t abs_x, rnd_coord_t abs_y, int mouse_mot) { } + +const char *rnd_conf_userdir_path; +const char *rnd_pcphl_conf_user_path; +const char *rnd_conf_sysdir_path; +const char *rnd_conf_sys_path; + +const char pcb_conf_internal_arr[] = {""}, *pcb_conf_internal = pcb_conf_internal_arr; Index: test/main.c =================================================================== --- test/main.c (revision 31761) +++ test/main.c (revision 31762) @@ -1,4 +1,5 @@ #include +#include "glue.c" #include "../impedance.c" int main() {