Support MAC OS X 10.7,10.8 91/13491/1
authorjaehoon.you <jaehoon.you@samsung.com>
Fri, 11 Oct 2013 09:07:57 +0000 (18:07 +0900)
committerEd Bartosh <eduard.bartosh@intel.com>
Mon, 28 Oct 2013 14:43:51 +0000 (16:43 +0200)
On OS X the serial device must be opened with O_NONBLOCK flag.
Later this flag must be cleared before write operations otherwise
only small chunks data can be written at once.
Tested on OS X (10.8.4).

Author : Piotr Wilczek <p.wilczek@samsung.com>

Change-Id: I2b77cf16aacd491af9c94203fe7dfc49ce361516
Signed-off-by: jaehoon.you <jaehoon.you@samsung.com>
AUTHORS
CMakeLists.txt
NOTICE
lthor.c
packaging/lthor.spec

diff --git a/AUTHORS b/AUTHORS
index 1a1d5ef..c9326d1 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,3 +1,4 @@
 Jaehoon You <jaehoon.you@samsung.com>
 Karol Lewandowski <k.lewandowsk@samsung.com>
 Rafal Krypa <r.krypa@samsung.com>
+Piotr Wilczek <p.wilczek@samsung.com>
index 5bd246e..5b36e69 100755 (executable)
@@ -13,7 +13,7 @@ SET(PKGNAME "${PACKAGE}")
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(BINDIR "${PREFIX}/bin")
 
-SET(PACKAGE_VERSION "1.3")
+SET(PACKAGE_VERSION "1.4")
 
 
 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
@@ -43,7 +43,11 @@ ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
 ADD_DEFINITIONS("-DPACKAGE_VERSION=\"${PACKAGE_VERSION}\"")
 
 #SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
-SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
+IF(APPLE)
+       SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
+ELSE()
+       SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
+ENDIF()
 
 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
diff --git a/NOTICE b/NOTICE
index 0e0f016..d18014e 100644 (file)
--- a/NOTICE
+++ b/NOTICE
@@ -1,3 +1,16 @@
 Copyright (c) Samsung Electronics Co., Ltd. All rights reserved.
 Except as noted, this software is licensed under Apache License, Version 2.
 Please, see the LICENSE.APLv2 file for Apache License terms and conditions.
+
+----------------------------------------------------------------------------
+<OS X>
+
+(Requirements: OS X 10.7, 10.8)
+For OS X 'pkg-config' package is required. It can be downloaded from:
+http://www.freedesktop.org/wiki/Software/pkg-config/
+
+The libarchive download is available at:
+http://www.libarchive.org/
+
+On OS X always execute lthor with -d /dev/cu.MYDEV
+ex) lthor -d /dev/cu.SAMSUNG_VSP *.tar
diff --git a/lthor.c b/lthor.c
index d97e2df..48c40ce 100755 (executable)
--- a/lthor.c
+++ b/lthor.c
@@ -183,6 +183,9 @@ int send_chunks(int fd, struct data_src *senddata, size_t size)
 
                r = write(fd, chunk, trans_unit_size);
                if (r != trans_unit_size) {
+                       if (r > 0)
+                               fprintf(stderr, "line %d: %d bytes requested, %d written\n",
+                                               __LINE__, trans_unit_size, r);
                        fprintf(stderr, "line %d: failed to send data\n", __LINE__);
                        free(chunk);
                        return -1;
@@ -577,11 +580,20 @@ int open_port(const char *portname, int wait)
                }
 
                if (dev) {
-                       fd = open(dev, O_RDWR);
+                       /* On OS X open serial port with O_NONBLOCK flag */
+                       fd = open(dev, O_RDWR | O_NONBLOCK);
+
                        if (fd == -1) {
                                perror("port open error!!\n");
                                return -1;
                        }
+
+                       /*now clear the O_NONBLOCK flag to enable writing big data chunks at once*/
+                       if (fcntl(fd, F_SETFL, 0)) {
+                               printf("line %d: error clearing O_NONBLOCK\n", __LINE__);
+                               return -1;
+                       }
+
                        break;
                }
 
index a2e0bc0..6c29918 100644 (file)
@@ -3,7 +3,7 @@
 #
 Name:          lthor
 Summary:       Flashing tool for Tizen lunchbox
-Version:       1.3
+Version:       1.4
 Release:       1
 Group:         Development/Tools/Other
 License:       Apache