diff options
author | jaehoon.you <jaehoon.you@samsung.com> | 2013-10-11 18:07:57 +0900 |
---|---|---|
committer | Ed Bartosh <eduard.bartosh@intel.com> | 2013-10-28 16:43:51 +0200 |
commit | d6f6bfeae18d7359a972c75e95b80d5e5352576c (patch) | |
tree | 0a0b01571cc349b065eda0ee5df553e6417e3bc0 | |
parent | d662bcaf7fadb88cc1a7be9f574cd5901623b0c3 (diff) | |
download | lthor-d6f6bfeae18d7359a972c75e95b80d5e5352576c.tar.gz lthor-d6f6bfeae18d7359a972c75e95b80d5e5352576c.tar.bz2 lthor-d6f6bfeae18d7359a972c75e95b80d5e5352576c.zip |
Support MAC OS X 10.7,10.8
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>
-rw-r--r-- | AUTHORS | 1 | ||||
-rwxr-xr-x | CMakeLists.txt | 8 | ||||
-rw-r--r-- | NOTICE | 13 | ||||
-rwxr-xr-x | lthor.c | 14 | ||||
-rw-r--r-- | packaging/lthor.spec | 2 |
5 files changed, 34 insertions, 4 deletions
@@ -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> diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bd246e..5b36e69 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}) @@ -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 @@ -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; } diff --git a/packaging/lthor.spec b/packaging/lthor.spec index a2e0bc0..6c29918 100644 --- a/packaging/lthor.spec +++ b/packaging/lthor.spec @@ -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 |