diff --git a/bindings/php/config.m4 b/bindings/php/config.m4 new file mode 100644 index 00000000..28238114 --- /dev/null +++ b/bindings/php/config.m4 @@ -0,0 +1,41 @@ +PHP_ARG_ENABLE(telldus, whether to enable Telldus TellStick support, +[ --enable-telldus Enable Telldus TellStick support]) + +if test "$PHP_TELLDUS" = "yes"; then + AC_DEFINE(HAVE_TELLDUS, 1, [Whether you have Telldus TellStick]) + + SEARCH_PATH="/usr/local /usr" + SEARCH_FOR="/include/TellUsbD101.h" + if test -r $PHP_TELLDUS/; then # path given as parameter + TELLDUS_DIR=$PHP_TELLDUS + else # search default path list + AC_MSG_CHECKING([for telldus files in default path]) + for i in $SEARCH_PATH ; do + if test -r $i/$SEARCH_FOR; then + TELLDUS_DIR=$i + AC_MSG_RESULT(found in $i) + fi + done + fi + if test -z "$TELLDUS_DIR"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Please reinstall the telldus-core distribution]) + fi + # --enable-telldus -> add include path + PHP_ADD_INCLUDE($TELLDUS_DIR/include) + # --enable-telldus -> check for lib and symbol presence + LIBNAME=tellusbd101 + LIBSYMBOL=devGetNumberOfDevices + PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL, + [ + PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $TELLDUS_DIR/lib, TELLDUS_SHARED_LIBADD) + AC_DEFINE(HAVE_TELLDUSLIB,1,[ ]) + ],[ + AC_MSG_ERROR([wrong telldus lib version or lib not found]) + ],[ + -L$TELLDUS_DIR/lib -lm + ]) + PHP_SUBST(TELLDUS_SHARED_LIBADD) + + PHP_NEW_EXTENSION(telldus, telldus.c, $ext_shared) +fi diff --git a/bindings/php/example/example.php b/bindings/php/example/example.php new file mode 100644 index 00000000..064f1a5c --- /dev/null +++ b/bindings/php/example/example.php @@ -0,0 +1,39 @@ += 20010901 + STANDARD_MODULE_HEADER, +#endif + PHP_TELLDUS_EXTNAME, + telldus_functions, + PHP_MINIT(telldus), + PHP_MSHUTDOWN(telldus), + PHP_RINIT(telldus), + NULL, + NULL, +#if ZEND_MODULE_API_NO >= 20010901 + PHP_TELLDUS_VERSION, +#endif + STANDARD_MODULE_PROPERTIES +}; + +#ifdef COMPILE_DL_TELLDUS + ZEND_GET_MODULE(telldus) +#endif + + +PHP_RINIT_FUNCTION(telldus) +{ + return SUCCESS; +} + +PHP_MINIT_FUNCTION(telldus) +{ + REGISTER_LONG_CONSTANT("TELLDUS_TURNON", TELLSTICK_TURNON, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TELLDUS_TURNOFF", TELLSTICK_TURNOFF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TELLDUS_BELL", TELLSTICK_BELL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TELLDUS_TOGGLE", TELLSTICK_TOGGLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TELLDUS_DIM", TELLSTICK_DIM, CONST_CS | CONST_PERSISTENT); + + return SUCCESS; +} + +PHP_MSHUTDOWN_FUNCTION(telldus) +{ + return SUCCESS; +} + +PHP_FUNCTION(telldus_dev_turn_on) +{ + long id; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) { + RETURN_NULL(); + } + + RETURN_BOOL( devTurnOn( id ) ); +} + +PHP_FUNCTION(telldus_dev_turn_off) +{ + long id; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) { + RETURN_NULL(); + } + + RETURN_BOOL( devTurnOff( id ) ); +} + +PHP_FUNCTION(telldus_dev_bell) +{ + long id; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) { + RETURN_NULL(); + } + + RETURN_BOOL( devBell( id ) ); +} + +PHP_FUNCTION(telldus_dev_dim) +{ + long id; + long level; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &id, &level) == FAILURE) { + RETURN_NULL(); + } + if (level < 0 || level > 255) { + RETURN_NULL(); + } + + RETURN_BOOL( devDim( id, level ) ); +} + + +PHP_FUNCTION(telldus_dev_methods) +{ + long id; + long methods; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) { + RETURN_NULL(); + } + + methods = devMethods( id ); + RETURN_LONG(methods); +} + +PHP_FUNCTION(telldus_get_number_of_devices) +{ + int nbr = devGetNumberOfDevices(); + RETURN_LONG(nbr); +} + +PHP_FUNCTION(telldus_get_device_id) +{ + long index; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index) == FAILURE) { + RETURN_LONG(0); + } + + RETURN_LONG( devGetDeviceId( index ) ); +} + +PHP_FUNCTION(telldus_get_name) +{ + long id; + char *name; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) { + RETURN_NULL(); + } + + name = devGetName( id ); + RETURN_STRING( name, 1 ); +}